工具
http://regex101.com
页面解读
限定符
匹配对象是一个字符
符号 | 解释 |
---|---|
? | 限定符,前面的字符要出现0次或者[1]次,/used?代表d出现0次或者1次,也就是可有可无 |
* | 前面的字符要出现0和或者多次 |
+ | 匹配出现1次以上的字符 |
{} | 指定前面字符出现的次数或者范围 |
{}匹配例子:ab{6}c:出现6次b,ab{2,6}:出现2次到6次,如果想出现两次以上:ab{2,}
例子:
ac
abc
abbbbbc
adc
addddc
如果想匹配多个字符的重复,比如想匹配ababababc,ab重复,可以将ab括起来,再加限定符这里可以用(ab)+
或运算符
示例:
a cat
a dog
a bird
a (cat|dog):a后面是空格,后面括号代表要么是dog要么是cat、括号不可少,否则就变成了a cat|dog也就是要么是a cat 要么是dog。
字符类:[abc]+,方括号里的内容代表内容只能取自他们
abc
tiger
aabbcc
dog
可以在[]里指定范围:[a-zA-z]代表所有英文字符
再括号的前面加一个^号代表括号内之外的字符[^1-9]
代表数字字符之外的字符
元字符
空格…
正则表达式中的大多数元字符都是以\开头
写法 | 解释 |
---|---|
\d | 数字字符=[0-9] |
\D | 非数字字符=[^0-9] |
\w | 单词字符=[a-zA-z0-9] |
\W | 非单词字符=[^a-zA-z0-9] |
\s | 空白符,包含tab与换行符 |
\S | 非空白字符 |
. | 任意字符,不包含换行符 |
^ | 匹配行首:^a 只会匹配行首的a |
$ | 匹配行位:a$ 只会匹配行尾的a |
贪婪与懒惰匹配
*+{}默认匹配尽可能多的字符
<span><b>This is a sample text</b></span>
想要匹配
<.+>:结果是全部匹配了,因为.
会匹配尽可能多的字符
解法:
<.+?>:将贪婪匹配切换为懒惰匹配
实例:
16进制颜色值匹配
#00
#ffffff
#ffaaff
#00hh00
#aabbc
#000000
#ffffffff
可以用\b代表字符边界,可以作为边界,你也就不要向下匹配了,就像这里的最后一个一样
实例代码:#[a-fA-f0-9]{6}\b
ip地址的匹配
123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is a string
123.123.0
四段数字构成,数字段之间用.
隔开,注意这里.是指代所有字符,要用原本的意思进行转义\.
高级部分
捕获、断言、平衡组,递归
参考资料
正则表达式30分钟入门教程 作者:deerchao
Regex tutorial—A quick cheatsheet by examples (英文) 作者:Jonny FoxRegular Expressions Tutorial (英文)