RE正则表达式

参考链接

https://blog.csdn.net/AlpinistWang/article/details/103660673
https://www.runoob.com/java/java-regular-expressions.html

匹配规则

000——匹配000
00\d——匹配001,002....009【00加上任意一个数字】
00\d{3}——匹配00123,00111【00加上任意三个数字】
\d{1,3}——匹配任意1~3个数字————{n,}【大于个】

\d在正则表达式中表示匹配任意数字,d 是 digital 的简写。
\w——w 是 word 的简写,表示匹配一个常用字符,包括字母、数字、下划线
\s——s 是 space 的简写,表示匹配一个空格,包括三种空格键,回车键 \n,Tab 键 \t。
. 可以匹配任意字符

* 匹配任意次,等价于{0,}
+表示至少匹配一次,等价于{1,}
? 匹配 0 次或 1 次,等价于{0,1}

[]用于匹配指定范围内的字符,比如[123456789] 可以匹配 1~9,语法糖为[1-9]。同理[a-g] 表示 [abcdefg],同时还可以组合,[1-9a-gU-Z]
“或”运算符是 |,[0189] 也可以写作 0|1|8|9。但或不局限于单个字符,abc|ABC——匹配abc或者ABC。

将字母换成大写,就表示相反的意思
\D则表示匹配一个非数字
[^]表示[ ]的取反

java中正则表达式的应用

在正则表达式里,\也转义字符。
java里面如果需要匹配的字符串含有特殊字符,也需要有 转义。所以java里面用 \ 。

Pattern pattern = Pattern.compile("Name:(\\w+)\\s*Age:(\\d{1,3})");
Matcher matcher = pattern.matcher("Name:Aurora  Age:18");
if(matcher.matches()) {
    String group1 = matcher.group(1);
    String group2 = matcher.group(2);
    System.out.println(group1);  // 输出为 Aurora
    System.out.println(group2);  // 输出为 18
}
//包含匹配,通过while把包含的全部输出
while(matcher.find()){
    System.out.println(matcher.group(1));
}

Matcher有两个函数用于匹配。
matches() 是拿整个输入的字符串和定义的正则模式匹配;——判断整个输入的字符串是否匹配
find() 是包含匹配, 整个输入的字符串包含定义的正则模式. ——判断整个输入的字符串中是否有部分匹配

( ) 用于取出特定位置的值。
用()将需要取值的地方括起来,传给 Pattern 对象,再用 Pattern 对象匹配后获得的 Matcher 对象来取值。每个匹配的值将会按照顺序保存在 Matcher 对象的 group 中。

用() 把\w+ 和 \d{1,3} 分别括起来了,判断 Pattern 对象与字符串是否匹配的方法是 Matcher.matches(),如果匹配成功,这个函数将返回 true,如果匹配失败,则返回 false。

group 是从下标 1 开始取值的,这是因为 group(0) 被用来保存整个匹配的字符串了
因此group(0)是特殊组,它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

将 “二分,回溯;递归 分治”转化为“二分;回溯;递归;分治”
replaceAll("[,;\s]+", ";") 函数可以做到
将 “二分;回溯;递归;分治”转化为“二分--;--回溯--;--递归--;--分治”
replaceAll 的第二个参数中,我们可以通过 1,2,…来反向引用匹配到的子串。只要将需要引用的部分用 () 括起来就可以了。
replaceAll("([,;\s]+)", "---$1---")

统计“LeetCodeeee” 中末尾e的个数
如果只是用 (\w+)(e) 的话,group1 中会匹配出来长度11,而group2则匹配为空。
因为正则的贪婪匹配,会让 \w能尽可能多的匹配,以至于匹配到末尾的 e。
如果要选择非贪婪匹配,则需要使用 (\w+?)(e
)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容