正则表达式的总结

目录

字符

分组和引用 

数量 

锚点/边界

预查断言

特色标志


字符

表达式描述例子
[abc]字符集。匹配集合中所含的任一字符。
[^abc]否定字符集。匹配任何不在集合中的字符。
[a-z]字符范围。匹配指定范围内的任意字符。
.匹配除换行符以外的任何单个字符。
\转义字符。
\w匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。
\W匹配任何非字母数字(等价于[^A-Za-z0-9_])。
\d数字。匹配任何数字。
\D非数字。匹配任何非数字字符。
\s空白。匹配任何空白字符,包括空格、制表符等。
\S非空白。匹配任何非空白字符。

分组和引用 

表达式描述例子
(expression)分组。匹配括号里的整个表达式。(abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致
(?:expression)非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。(?:abc)表示找到这样abc这样一组,但不记录,不保存到$变量中,否则可以通过$x取第几个括号所匹配到的项,比如:(aaa)(bbb)(ccc)(?:ddd)(eee),可以用$1获取(aaa)匹配到的内容,而$3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)匹配到的内容,因为前一对括号没有保存变量
\num对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep

数量 

表达式描述例子
?匹配前面的表达式0个或1个。即表示可选项。(abc)?$
+匹配前面的表达式至少1个。(abc)+\\w{2,}$
*匹配前面的表达式0个或多个。(abc)*\\w{2,}$
|或运算符。并集,可以匹配符号前后的表达式。(0|1|2)
{m}匹配前面的表达式m个。
{m,}匹配前面的表达式最少m个。
{m,n}匹配前面的表达式最少m个,最多n个。

锚点/边界

表达式描述例子
^匹配字符串或行开头。
$匹配字符串或行结尾。
\b匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep
\B匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code

预查断言

表达式描述例子
(?=)正向预查。Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code
(?!)正向否定预查。Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code
(?<=)反向预查。(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep
(?<!)反向否定预查。(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep

特色标志

表达式描述例子
(?i)忽略大小写。

(?i)abc:表示abc不区分大大小写

a(?i)bc:表示bc不区分大小写

a((?i)b)c:表示b不区分大小写

/.../g全局匹配。java程序中可使用Matcher.find()方法
/.../m多行修饰符。用于多行匹配。

在java程序中,创建匹配器的时候可以设置匹配模式。

String test = "adw\nfseabdff";        

Pattern p = Pattern.compile("^.*abd.*$", Pattern.MULTILINE); System.out.println(p.matcher(test).find());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值