#常用的元字符
代码 | 说明 |
---|
- | *前边的内容可以连续重复使用任意次以使整个表达式得到匹配 . | 匹配除了换行符以外的任意字符 \d | 匹配一位数字(0,或1,或2,或……) \w | 匹配字母或数字或下划线或汉字 \s | 匹配任意的空白符 \b | 匹配单词的开始或结束 ^ | 匹配字符串的开始 $ | 匹配字符串的结束
#常用的限定符
代码/语法 | 说明 |
---|
-
| 重复零次或更多次
-
| 重复一次或更多次
? | 重复零次或一次 {n} | 重复n次 {n,} | 重复n次或更多次 {n,m} | 重复n次到m次
#其他
- 字符转义
如需查找*,+等元字符本身的话,需使用\来取消这些字符的特殊含义;
\. \*
- 字符类
匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),只需在方括号里列出;如:
[aeiou]: 匹配任何一个英文元音字母;
[.?!]: 匹配标点符号(.或?或!)
(?0\d{2}[) -]?\d{8}:首先是一个转义字符(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})
- 分枝条件
分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开
- 分组
用小括号来指定子表达式(也叫做分组)
e.g. IP地址匹配: (\d{1,3}.){3}\d{1,3} 解析:\d{1,3}匹配1到3位的数字,(\d{1,3}.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})
- 反义
常用的反义代码
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
-
后向引用
…
-
零宽断言
…
-
负向零宽断言
…
-
注释
…
-
贪婪与懒惰
…
-
处理选项
…
-
平衡组/递归匹配
…
#Example
RE | 示意 |
---|---|
\bhi\b | 查找单词hi |
.* | 任意数量的不包含换行的字符 |
\bhi\b.*\bLucy\b | 先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词 |
0\d{2}-\d{8} | \d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次) |
c.d(.+) | 查询到结果类似于c.d((c)a, string) |
((2[0-4]\d | 25[0-5] |
#附录: