正则表达式的规则字符:

 

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 }