{n} 表示只能出现n次
{n,} 表示至少出现n次
{n,m} 表示至少出现n次,至多出现m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次
#习题
‘1.匹配任意的两位整数‘
\d{2}
‘2.匹配保留两位小数的任意数字‘
\d+\.\d{2}
‘3.匹配一个整数或者小数‘
\d+\.\d+|\d+
\d+(\.\d+)?
注意
贪婪匹配:总是在符合量词条件的范围内尽量多匹配。
# 默认贪婪匹配(回溯算发实现)
\d{6,12}
12345678 # 量词范围条件内尽量取多的次数匹配
结果:全部匹配
<.+>
<html>abcdefghijk</htlm> # 只会匹配到一个结果
结果:全部匹配
惰性匹配:总是匹配符合条件范围内尽量小的字符串。
# 非贪婪匹配
\d{6,12}?
12345678
结果:123456 # 只匹配条件类最小的次数。
\d+?3
12345678
结果:123
元字符+量词+?:表示按照元字符规则在量词范围内匹配,一旦遇到x就停止。
\d+?3
12345678
结果:123
.*?x:表示匹配任意的内容任意多次遇到x就停止。
常用写法:
# 身份证号正则表达式
‘‘‘
15位:全数字,首位不为0。
18位:全数字,首位不位0,最后一个可能是x和数字。
‘‘‘
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?
原文:https://www.cnblogs.com/elliottwave/p/12549638.html