正则表达式
Posted George93_部落格
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
1.匹配
match(String regex) ;
1 String tel="18600000111"; 2 String reg="1[3578]\\d{9}"; //首字母1,第二字母3,5,7,8,后面都是数字共有9位 3 boolean b1 =tel.matches(reg); 4 System.out.println(b1);//输出结果true
2.切割
(1)切割一个或多个空格
1 String str ="aaa bbb ccc ddd eee"; 2 String [] arr =str.split(" +");//“ +”表示至少有一个空格 3 for(String s:arr){ 4 System.out.print(s); //输出aaabbbcccdddeee 5 }
(2)通过.来切割字符串
1 String str2="zhangsan.lisi.wangwu"; 2 /* \\是代表转义字符,如果你直接放split("."),是无法切割的,因为.在正则表达式中.有它特有的含义 3 当你用转义之后\\.那么它就只代表一个点,而不具有特殊意义*/ 4 String [] arr2 =str2.split("\\."); 5 for(String s:arr2){ 6 System.out.println(s); 7 } 8 9 /* 补充:在java中需要转义的除了.外,还有需要先转义不能直接切割的: 10 * $ ( ) * + [ ] ? \ ^ { } | 11 * 这么几个大家用它来切割的时候,转义后就可以了 12 */
(3)用重复项来切割
1 String str3 ="wer#######tayuio****asdfg"; 2 String reg ="(..)"; //(.)代表第一个任意字符 \\1代表回去第一组数据 +代表1个或者多个 3 String [] arr3=str3.split(reg); 4 for(String s:arr3){ 5 System.out.println(s); 6 } 7 8 /*:(.)的字符视为一个整体。 \\1代表回去第一组数据 9 14 * 那它其实在这里也就代表(.),所以就相当于(.)(.)+,这里仅仅是相当于,也是为了好理解,其实他们还是有本质区别的 10 15 * 因为(.)==\\1,就是说如果.代表a,那么\\1也就代表a,而(.)≠(.),前面代表a后面可以代表b,因为前后两个点不是同一个点 11 */
3.替换
(1)把重复的数据 替换为#
1 String str="wer#####yw****fghj"; 2 //把重复的数据 替换为# 3 str=str.replaceAll("(.)\\1+", "#");//(.) 第一个任意字符 \\1 取第一组数据 + 1个或者多个 4 System.out.println(str) ; //输出wer#yw#fghj
(2)把重复项都变成单个
1 String str="wer#####yw****fg???hj"; 2 //后一个参数的含义 可以通过$ 数字引用第一个参数中的组,这个美元符号代表就是前面小括号里的内容 3 str=str.replaceAll("(.)\\1+", "$1"); 4 System.out.println(str); //输出wer#yw*fg?hj
(3)电话号码中间几位用*表示
1 String str2="15889895644";//158****5644 2 str2=str2.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); 3 System.out.println(str2);// $1表示符号前面第一个小括号,$2代表第二个,如果有第三个小括号,那也可以$3; //输出158****5644
4.获取
(1)获取正则表达式所匹配的字符串
1 String str="da jio zhu yi laa, ming tian fang jia laa"; 2 //1.定义规则 3 String reg="\\b[a-z]{3}\\b";//任意三个字符 \\b 是单词的边界(明白为什么加这个) 4 Pattern p =Pattern.compile(reg); 5 //3.通过正则表达对象 获取匹配器对象 并把操作的字符串关联 6 Matcher m =p.matcher(str); 7 while(m.find()){ //find()用来搜索与正则表达式相匹配的任何目标字符串 8 System.out.println(m.start()+"....."+m.group()+"..."+m.end()); 9 } //start()开始位置 group()用来返回包含了所匹配文本的字符串 end()结束位置 10 } 11 } 12 /* 有关: 在regex(正则表达式)包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。 13 //输出3.....jio...6 14 7.....zhu...10 15 14.....laa...17 16 35.....jia...38 17 39.....laa...42
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性