正则表达式1
正则表达式
1.一般符号
| 符号 | 意思 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 等价于 ‘[^A-Za-z0-9_]’ |
| \s | 匹配空格 |
| \d | 匹配数字 |
| \b | 匹配单词边界,比如要匹配I am lily中的am,可以使用\bam\b |
| \A | 匹配字符串的开始 |
| \Z | 匹配字符串的结束 |
| ^ | 匹配字符串的开始,多行时匹配每一行的开头 |
| $ | 匹配字符串的结束,多行时匹配每一行的结束 |
| [] | 匹配括号内的包含的字符,比如[a-z] |
| | | 匹配左右两边的表达式,优先匹配左边的,如果|不在括号中,作用域就是整个正则表达式。 |
2.反义
| 符号 | 意思 |
|---|---|
| \W | 匹配任意不是字母,数字,下划线 的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配任意非数字的字符 |
| \B | 匹配不是单词开头或结束的位置 |
| [^abc] | 匹配除了abc以外的任意字符 |
3.数量相关
| 符号 | 意思 |
|---|---|
| * | 匹配前面的子表达式零次或多次。例如,zo 能匹配 “z” 以及 “zoo"。 等价于{0,}。 |
| + | 匹配前面的子表达式一次或多次。例如,'zo+‘ 能匹配 “zo” 以及 “zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
| ? | 匹配前面的子表达式零次或一次。例如,"do(es)?“ 可以匹配 "do” 或 “does” 中的"do" 。? 等价于 {0,1}。 |
| {n} | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}‘ 不能匹配 “Bob” 中的 'o',但是能匹配 “food” 中的两个 o。 |
| {n,} | n 是一个非负整数。至少匹配n 次。例如,'o{2,}‘ 不能匹配 “Bob” 中的 'o',但能匹配 “foooood” 中的所有 o。'o{1,}’ 等价于 ‘o+'。'o{0,}’ 则等价于 ‘o*'。 |
| {n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}“ 将匹配 "fooooood” 中的前三个 o。'o{0,1}‘ 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 |
| *? | 匹配任意次,但尽可能少重复 |
| +? | 重复1次或更多次,但尽可能少重复 |
| ?? | 重复0次或1次,但尽可能少重复 |
| {n,m}? | 重复n到m次,但尽可能少重复 |
| {n,}? | 重复n次以上,但尽可能少重复 |
4. ()作为分组
| 符号 | 意思 |
|---|---|
| () | 表示一个分组,每个分组都有一个编号,从1开始递增,分组的后面可以接表示数量的符号。 |
| (?P |
表示为这个分组增加一个别名 |
| \数字 | “\”后面接一个数字,该数字就是分组的编号,用来引用一个前面的分组 |
| (?P=name) | name指的是分组的别名,用来用来引用一个前面的分组 |
5. ()作为分组不作为分组
| 符号 | 意思 |
|---|---|
| (?:) | 不分组,不分配分组编号 |
| (?=) | 匹配前面的字符的后面必须跟这该括号内的表达式。比如a(?=\d)则匹配后面接着数字的a。 |
| (?!) | 匹配前面的字符的后面不是跟这该括号内的表达式。比如a(?!\d)则匹配后面不是接着数字的a。 |
| (?<=) | 比如a(?<=\d)则匹配前面接着数字的a。 |
| (?<!) | 比如a(?<!\d)则匹配前面不是接着数字的a。 |
| (?#) | #号后面的内容是注释 |
| (?(id/name)par1|par2) | 就是如果该编号或者名字的分组匹配到了,那么久匹配par1,如果没有就匹配par2。 |
实例:
1 2 | |