文章目录
正则表达式的特点是:1. 灵活性、逻辑性和功能性非常的强;2. 可以迅速地用极简单的方式达到字符串的复杂控制。3. 对于刚接触的人来说,比较晦涩难懂。
字面量字符( Literal Characters )
字符 | 描述 | 描述 |
---|---|---|
f | 换页符 | (u000C) |
n | 换行符 | (u000A) |
n | 换行符 | (u000A) |
r | 回车 | (u000D) |
o | NUL字符 | (u0000) |
t | 制表符 | (u0009) |
v | 垂直制表符 | (u000B) |
xnn | 由十六进制数nn指定的拉丁字符 | x0A等价于n |
uxxxx | 由十六进行xxxx指定的Unicode字符 | u0009等价与t |
cX 控制字符(X的值必须是A-Z或a-z) | cJ等价于换行符n |
字符类( Character Classes )
字符 | 描述 | 示例 |
---|---|---|
[xyz] | 匹配位于括号内的任意字符 | [abc]匹配’plain’中的a |
[^xyz] | 匹配不在括号之中的任意字符 [^abc] | 匹配’plain’中的p |
w | 等价于[a-zA-Z0-9_] | w匹配’sina’中的s |
W | 等价于[^a-zA-Z0-9_] | w不能匹配’sina’ |
s | 任何Unicode空白符 | [ fnrtv] |
S | 任何非空白字符 | [^ fnrtv] |
d | 等价于[0-9] | d匹配’sina123’中的1 |
D | 等价于[^0-9] | D不能匹配’sina1’中的1 |
[b] | 退格直接量(特例) |
重复
字符 | 描述 | 示例 |
---|---|---|
{n,m} | 匹配至少n次,但不超过m次,n和m必须是非负整数,且n<=m | /\d{4,6}/ 匹配4-6位0-9的数字 |
{n,} | 匹配至少n次 o{2,} | 不匹配’Bob’中的’o’,但匹配’food’中的 o. |
{n} | 恰好匹配n次 o{2} | 不匹配’Bob’中的’o’,但匹配’food’中的o. |
? | 匹配0次或1次,等价于{0,1} | zo? 匹配 “z” and “zo”, 但不匹配”zoo”. |
- | 匹配1次或多次,等价于{1,} | zo+ 匹配 “zo” and “zoo”, 但不匹配 “z”.
- | 匹配0次或多次,等价于{0,} | zo* 匹配 “z” 和 “zoo”.
非贪婪的重复
当?紧跟在其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式是尽可能少的匹配所搜索的字符串。例如字符串”ooooo”,”o+?”将匹配单个”o”,而o+匹配所有o