字符:
\\ 反斜线字符
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
字符匹配:
[a-z] 所有小写字母
[A-Z] 所有大写字母
[^abc] 除过所有小写字母
[0-9] 所有数字
预定字符:
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界 指的是所有非\w的都可以是边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
特殊构造(非捕获)
(?:X) X,作为非捕获组
(?idmsux-idmsux) Nothing,但是将匹配标志i d m s u x on - off
(?idmsux-idmsux:X) X,作为带有给定标志 i d m s u x on - off
的非捕获组 (?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?<!X) X,通过零宽度的负 lookbehind
(?>X) X,作为独立的非捕获组
在学习String的时候有replaceAll(String regex,String replacement)方法和split(String regex)方法以及matches(String regex)都可以使用正则来进行使用。
现在我们使用Pattern和Matcher来进行正则的使用。
Pattern和Matcher概述:
Pattern 模式器: 把正则表达式封装进该类
Matcher 匹配器
Pattern的使用,把正则表达式封装到模式器中
Pattern a=Pattern.compile(正则格式字符串);
通过模式器中的matcher方法,又获取到了一个匹配,并把我们要匹配的数据传进去
Matcher m = p.matcher("aaaaab");
boolean b=m.matches();
Matcher类的方法:
find() 判断是否可以匹配上如果是返回true
group 找出匹配的字符串。 注意一定要先使用find()方法先找到 才能用group()方法获取出来
举例:
String b="adv faas abc adghjj";
Pattern a=Pattern.compile("a.c");
Matcher c=a.matcher(b);
c.find();
System.out.println("c.find() = " + c.group());
public int groupCount() 返回此匹配器模式中的捕获组数。根据惯例,零组表示整个模式。它不包括在此计数中。
原文:https://www.cnblogs.com/project-zqc/p/11756386.html