正则表达式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 |
|