标签:
正则表达式的规则字符:
A:字符
x 字符 x,任意字符代表自己本身。
\\ 反斜线字符
\r 回车
\n 换行
B:字符类
[abc] a、b 或 c,任意字符一次。
[^abc] 任何字符,除了 a、b 或 c
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内
[0-9] 任意的数字字符一次
C:预定义字符类
. 任意的字符
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
单词字符:英文,数字,及_
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界(也就是说这里出现的不能是单词字符)
abc hello world?haha
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
F:组
捕获组可以通过从左到右计算其开括号来编号。组零始终代表整个表达式。
((A)(B(C)))
第一组:(A)(B(C))
第二组:A
第三组:B(C)
第四组:C
1 import java.util.regex.Matcher; 2 import java.util.regex.Pattern; 3 4 //Pattern类的应用 5 public class PatternDemo { 6 public static void main(String[] args) { 7 Pattern p = Pattern.compile("a*b"); //括号内表示正则表达式 8 Matcher m = p.matcher("c*b");//括号内表示要匹配的字符串 9 boolean flag = m.matches(); 10 System.out.println(flag); 11 System.out.println("-------------------------------------------"); 12 13 String regex = "(.)\\1+";//叠词的表示法,正则表达式 14 Pattern p1 = Pattern.compile(regex); 15 String str = "jskkjjvjksvkjsjkgahgggghgaaayf"; 16 Matcher m1 = p1.matcher(str); 17 boolean flag2 = m1.matches();//查找出叠词 18 System.out.println(flag2); 19 while((m1.find())){//是否找到,进行判断,自动将指针移向下一个索引 20 String strTemp = m1.group();//获取到查找出来的结果 21 System.out.println(strTemp); 22 } 23 System.out.println("-------------------------------------------"); 24 String[] strArr = str.split(regex);//依据叠词进行分割 25 for(String strTemp:strArr){ 26 System.out.println(strTemp); 27 } 28 System.out.println("-------------------------------------------"); 29 } 30 }
标签:
原文地址:http://www.cnblogs.com/zhidianhcuan/p/4430274.html