正则表达式
正则表达式:
字符组:
[0-9] 数字:0123456789
[a-z] 英文:a到z(小写)
[A-Z] 英文:A到Z(大写)
[a-zA-Z] 括号里可以写多个
元字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配以(一个单词)的结尾(g\b,以g结尾的)
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b,优先匹配|左边的
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
量词:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n次到m次,默认贪婪多次
.^$:
我. 匹配所有“我.”的字符
^我. 只从开关匹配“我.”
我.$ 只匹配结尾的"我.$"
*+?{}:
我.? 只匹配我后面零个或一个任意字符
我.* 匹配我后面零个或多个任意字符,匹配我所有所有东西直到结束
我.+ 匹配我后面任意1个或多个字符,匹配到结束
我.{1,2} 匹配我后面任意一到两个字符,有两个必须匹配两个。
我.*? 惰性匹配,只匹配我,我后面都不要
字符集 [] [^]:
我[爱你] 匹配“我”字后面“爱你”的字符任意次数
我[^你]* 匹配“我”字后面任意次数不是“你”的字符
[\d] 匹配任意一个数字
[\d]+ 匹配任意多个数字
分组()与或| [^]:
^[1-9]\d{13,16}[0-9x]$ 匹配[1-9]\d{13,16} 13到16次,[0-9x] 0-9或x结尾
^[1-9]\d{14}(\d{2}[0-9x])?$ 匹配[1-9]\d{14},\d{2}[0-9] 分成一组,约束他们出现1次或零次
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ 匹配 [1-9]\d{16}[0-9x]如果没有匹配上就匹配[1-9]\d{14}
转义符\ :
\d 只能匹配数字,不能匹配\d
\\d 匹配\d ,\代表转义
“\\\\d” 匹配\\d
r“\\d” r‘\d',让整个字符串不转义(有引号)
贪婪匹配:
<.*> 默认为贪婪匹配,会尽量多的找。
<.*?> 加上? 贪婪匹配转为惰性匹配,会尽量取短的。
惰性匹配:
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
{n,m} 重复n到m次,但尽可能少重复
{n,} 重复n次以上,但尽可能少重复
.*?x : 取前面任意长度的字符,直到一个x出现