一、什么是正则表达式
正则表达式(Regular Expression):强大的文本处理工具。
模式匹配和替换的强大工具。
linux中主要通过 grep 来发挥正则表达式(以行为单位)的强大功能!
注意,这里的*等表示的是量词单位,不是之前提到的通配符,在正则表达式里请不要与通配符混淆!
二、正则表达式入门
两部分组成:
1.原义文本字符
2.元字符
[] 一类,即符合一个都行 [abc] 符合一个都行
[^] 负向类,即取反 [^abc] a b c 以外的都行
[a-z] 范围类,是一个闭区间,支持连写 [a-zA-Z] 所有大小写字符,想匹配的比如本身就有-等
就直接在后面加- [0-9-]
g 全局查找 i 忽略大小写 m 多行处理
预定义类:
. 回车换行之后的所有字符
d 数字字符0-9
D 非数字字符
s 空白符 space
S 非空白符
w 数字字符下划线 word
W 非数字字符下划线
边界
单词边界(bound)
B 非单词边界
^ 以xxx开始
$ 以xxx结束
量词
? 0次或者1次
+ 1次或者多次
* 任意次
{n} 出现了n次
{n,} 至少出现了n次
{n,m} n次到m次
贪婪模式:123456 d{3,6} 会匹配6次,尽可能多地匹配 默认模式
非贪婪模式:d{3,6}? 非贪婪模式,匹配3次就不匹配了
分组:Byron{3} 默认匹配n字符,采用分组匹配整个单词 (Byron){3}
或 | 使用分组限制或的范围,不然默认整个正则表达式左右两个部分或 Byr(on|Ca)rry
反向引用 $1 $2 $n等表示第n个分组的内容,(其它语言大同小异 如1表示分组1的文本)
忽略分组,在分组前加?: (?: Byron)
前瞻:正则表达式在匹配时向前检查是否符合断言
正向前瞻 exp(?=assert) exp 与assert都是正则表达式,断言部分不匹配,只是作为断言
负向的 exp(?!assert)
后顾相反
完整正则表达式字符,参考:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
常用正则表达式:
http://blog.csdn.net/onebigday/article/details/5429868/
【推荐】:https://www.8090mc.cn/181.html
正则表达式在线测试工具:
四、Java正则表达式
Java中的正则表达式,记得使用转义:例如:\d{17}
通常更情况下,String可以直接使用matchs方法匹配一个正则
使用细节,参考:https://blog.csdn.net/qq_18298439/article/details/88974940