正则表达式整理【贪婪模式、非贪婪模式、独占模式】
一、正则表达式的基本作用
正则表达式可以用来做字符串的分割、匹配、替换、以及搜索截取这四部操作对与一般编程语言例如java也是可以去完成的,之所以用正则表达式,是因为它方便,如果大量的字符需要截取或者特定要求比较高的字符用java去截取将会带来很大的不便、而正则表达式只需要匹配截取就好了。
二、正则表达式的基本语法
- \d 代表1个数字0-9
- \D 代表1个非数字
- \w 代表1个字符0-9 A-Z a-z
- \W 代表1个非字符
- . 代表任意1个非字符
- \s 代表1个空格
- \. 代表 .
() 字符串选择器(abc|cde|def) --这个位置必须是这三个中之一
[] 字符选择器
- | ,
[a-z] a到z的任意一个字符
[a|b|c] [abc] --abc三个中的一个字符
[a,b,c] 同上
{} 修饰符 通常修饰前面一个正则
\d{3,4} 最少三个数字,最多四个数字
\d{3} 必须是三位数字
\d{3,} 最少3个数字最多无所谓
\d{,3} 最多3位数字
+修饰符 通常修饰前面一个正则
\d+ 最少一个数字,最多无所谓
*修饰符 通常修饰前面一个正则
\d 最少0个数字 最多无所谓
?修饰符 通常修饰前面一个正则
\d? 最少0个数字 最多1个数字
?将正则匹配模式改为非贪婪模式
^非
[^a]在此处不允许是a这个字母
^ 匹配方向
从左向右匹配
$ 匹配方向
从右向左匹配
^()$ 边界界定图
完整匹配整个字符串
三、正则表达式非贪婪模式、贪婪模式、独占模式
非贪婪模式
解释:
贪婪模式一般是正则表达式默认的模式,意思是匹配符合条件的0个或者1个字符就不再继续往下匹配,正因为只匹配一个,形象的起名为非贪婪模式,应用符号为?
例子:
成功案例:
正则表达式:
a\w?bc
匹配字符串:
abbc
失败案例:
正则表达式:
a\w?c
匹配字符串:
abbc
注释:
通过上面的案例可以很明显的看见,非贪婪模式只匹配一个字符,及时后面有符合条件的也不行。如果想要可以,就要使用下面介绍的贪婪模式或者独占模式。
贪婪模式和独占模式
贪婪模式
解释:
贪婪模式是指在正则表达式中,匹配尽可能多的符合条件的字符,顾名思义尽可能的贪,由此起名贪婪模式,应用符号有{}
例子
正则表达式:
ab{1,}c --表示最少有一个匹配,最多无所谓
匹配字符串:
abbbbc
注释:
正则表达式匹配尽可能多的b
独占模式
解释:
独占模式和贪婪模式基本上是意思一样的,但是也会又差别。
独占模式后面使用的是+
例子:
正则表达式:
ab{1,4}+c --表示最少匹配一个字符,最多匹配4个字符,+号表示有多少匹配多少
匹配字符串:
abbbc
注释:
独占模式和贪婪模式的效果差不多,但是有区别,贪婪模式又字符回溯的功能。
回溯
解释:字符串再尽可能多的匹配的情况下,保证后面的匹配也可以尽可能的成功,就会对一匹配的字符进行回溯,给后面的匹配进行匹配。一般来说独占模式是没有回溯的,独占模式匹配到的字符串是不会进行回溯,如果后面的匹配需要用到,也不会进行回溯。
例子:
正则表达式:
ab{1,4}bbc
匹配字符串
abbbbc
注释:正则表达式匹配尽可能多的b,同时后面的bbc也需要匹配,这时前面的匹配已经匹配完了4个b,如果再匹配bbc就会匹配不上。再贪婪模式中,就会进行字符的回溯,放出两个b,让后面的bbc进行匹配。
更多推荐
所有评论(0)