正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的字串做替换或者从某个串中取出符合某个条件的字串等。
正则表达式在线测试:
http://www.regexpal.com/
元字符
常用元字符:
| 代码 | 说明 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \d | 匹配数字 |
| \s | 匹配空格 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始,如果是处理多行,意义变成行开始处 |
| $ | 匹配字符串的结束,如果是处理多行,意义变成行结束处 |
限定符
常用限定符:
| 代码 | 说明 |
|---|---|
| * | *前面的内容重复任意次 |
| + | +前面的内容重复一次或者多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n, } | 重复次数大于等于n |
| {n,m} | 重复次数大于等于n小于等于m |
字符类
[auiou] 匹配任何一个英文元音字母
[.?!] 匹配标点符号(. ? !)
反义
| 代码 | 说明 |
|---|---|
| \W | 匹配任意不是字母、数字、下划线、汉字的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配任意非数字的字符 |
| \B | 匹配不是单词开头或结束的位置 |
| [^x] | 匹配除了x以外的任意字符 |
| [^abcd] | 匹配除了abcd以外的任意字符 |
分组
| 代码 | 说明 |
|---|---|
| (exp) | 匹配exp,并捕获文本到自动命名组中 |
(?<name>exp) |
匹配exp,并捕获文本到名称为name的组里,也可以写成(?`name`exp) |
| (?:exp) | 匹配exp,不捕获匹配的文本,也不给次分组分配组号 |
| (?=exp) | 匹配exp前面的位置 |
| (?<=exp) | 匹配exp后面的位置 |
| (?!exp) | 匹配后面跟的不是exp的位置 |
| (?<!exp) | 匹配前面不是exp的位置 |
| (?#comment) | 注释 |
贪婪与懒惰
通常重复限定符的行为是匹配尽可能多的字符,在限定符后面加?使之成为惰性限定符,例如*?的含义为重复任意次数,但是尽可能少
博客地址,如果有帮助点个赞支持一下😁












网友评论