.Net转Java自学之路—基础巩固篇十八(正则)

正则表达式:

  正则就是用于操作字符串的规则。其中是以一些符号来标识规则。

  字符类:

    [] :范围  - :连接符  ^ :非

  预定义字符类:

    . :任何字符  

    \d :数字  \D :非数字

    \s :空白字符  \S :非空白字符

    \w :单词字符  \W:非单词字符

  边界匹配器:

    ~ :行开头  $ :行结尾  \b :单词边界

  组:

    ()

    当组进行嵌套时可以通过从左到右来计算其开括号来编号。组0代表的是整个表达式

    实例:(.)\\1+

    为了提高规则复用,用()进行封装,每个括号都是一个编号,从1开始

    为了复用这个规则,可以通过编号来完成该规则的调用。需要对编号数字进行转义。\\1就代表获取1组规则

  基本功能:

    匹配:

      str.matches("正则");

    切割:

      str.split("正则");

    替换:

      str.replaceAll("正则");

    获取:

      使用正则对象Pattern和匹配器Matcher

//范例:
//先将正则表达式编译成正则对象。使用的是Pattern类的一个静态方法。Compile(regex)
Pattern p=Pattern.compile("a*b");//a和b之间可以有字符也可以没有

//让正则对象和要操作的字符串相关联,通过matcher方法来完成,并返回匹配器对象
Matcher m=p.matcher("aaaab");

//通过匹配器对象的方法将正则模式作用到字符串上让字符串进行针对性的功能操作
boolean b=m.matches();

//将规则对字符串进行查找
while(m.find()){
    //将查找的内容进行获取。group()只获取不查找,一次只获取一个,故要循环处理
    m.group();
    //第二种方式获取:获取值序列 m.start(); m.end();
    str.substring(m.start(),m.end());
}

实例:

//正则邮箱校验
public boolean checkMail(String mail){
    String reg="[0-9a-zA-Z_]+@[0-9a-zA-Z]+(\\.[a-zA-Z]+)+";
    retrun mail.matches(reg);
}
//叠词还原:
public String showStr(String str){
    str=str.replaceAll("字符串中出现的符号","");
    retrun str.replaceAll("(.)\\1","$1");
}
//IP排序:
public void sortIp(String ips){
    //补0
    ips=ips.replaceAll("(\\d+)","00$1");
    ips=ips.replaceAll("0*(\\d{3})","$1");
    String[] iplist=ips.split(" +");
    TreeSet<String> ts=new TreeSet<String>();
    for(String str : iplist){
        ts.add(str);
    }
    for(String str : ts){
        str.replaceAll("0*(\\d+)","$1");//去除0
    }
}
//爬虫:
public void getContentByWeb(String regex){
    URL url=new URL(地址);
    URLConnection conn=url.openConnection();
    BufferedReader bufIn=new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line=null;
    Pattern p=Pattern.compile(regex);
    while((line=bufIn.readLine())!=null){
        Matcher m=p.matcher(line);
        while(m.find()){
            m.group();
        }
    }
}

原文地址:https://www.cnblogs.com/drop/p/10383823.html

时间: 2024-11-02 11:32:27

.Net转Java自学之路—基础巩固篇十八(正则)的相关文章

.Net转Java自学之路—基础巩固篇二十一(模块化思想)

Java 9 出现的 模块化思想/技术 优点:文件体积缩小,权限体系更精准 module-info.java 模块描述信息文件 module 本模块名称{ exports(导出)  对外暴露的包路径; requires  需要依赖的其他模块名称; } 新建: 右击项目>>Configure>>Create module-info.java>>小写英文模块名称 设置依赖信息 1.再新建的模块文件中写入 requires 模块名称: 2.右击项目>>Build

.Net转Java自学之路—基础巩固篇三十二(JavaMail)

commons-fileupload组件: commons-fileupload.jar commons-io.jar 该组件会解析request中的上传数据,解析后的结果是一个表单项数据封装到一个FileItem对象中,只需调用FileItem中的方法即可. 上传三步:相关类 工厂:DisFileItemFactory 解析器:ServletFileUpload 表单项:FileItem //ServletFileUpload: setFileSizeMax(n*1024);//限制单个文件大

.Net转Java自学之路—SpringMVC框架篇二(入门案例)

前端控制器配置,在web.xml中配置前端控制器. <!-- springmvc前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- contextConfigLocation配置springmv

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

马士兵:JAVA自学之路

JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训.决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势.一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的教师和课

[转载] JAVA自学之路

原文链接http://blog.csdn.net/mengxin846/article/details/2219844 虽然文章有点旧但还是有些启发的,譬如要事第一,好读书不求甚解. JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当 成学生

Java 自学之路

Java 自学之路 前言 从运行第一个程序开始算起,我接触编程也有三年的时间了.最初是从51单片机入门学习的C语言,班里面的大佬带着我一起做小项目,但是因为没人教,基本靠自学,学得慢,写的代码也烂,很没有章法.后来大三下半学期开始准备考研(从电子跨考计算机),从零开始学习数据结构,这才算是真正地入了编程的门.至于考研,后来就放弃了(别问我为什么放弃,当时脑子抽了),去了一家小公司实习.这家公司主要做机器视觉的项目,当时去面试的时候觉得挺高大上,技术 leader 也挺和蔼,感觉是很务实的一个团队

Android基础笔记(十八)- Fragment

博客的感悟终点-开始 什么是Fragment 添加fragment到Activity的两种方式 Fragment的生命周期 Fragment的向下兼容 Fragment之间的通信 博客的感悟,终点-开始 这个是基础的最后一篇博客了,学习了很多,也有很多感触. 就在这里大致总结一下. 坚持往往很难,完美的坚持下去更难.这是写这十八篇博客的感悟. 时间流失的很快,总是感觉时间不够用.慢慢的就会让自己博客的质量下降.今天反思了一下,我这样不就是在制造"破窗户"吗?(破窗户理论不知道的可以去看

#Java学习之路——基础阶段二(第十篇)

我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉. 1.Junit单元测试 我们在编程的时候会写一些功能,但是总不可能就是说没写一个功能来进行测试就要对整个项目