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