标记法 | 描述 | 正则表达式例子 | 匹配的字符串 |
---|---|---|---|
文字 | 匹配文字字符串值 | foo | foo |
表达式1 | 表达式2 | 匹配期中任何的一个表达式 | foo | bar | bet | foo, bar, bet |
. | 匹配任何字符,除了\n | b.c | b和c之间任何字符,如:bac, b9c, b#c等 |
^ | 匹配字符串的开始 | ^student | student开头的任何字符串,如student data |
$ | 匹配字符串的结尾 | /sh$ | 任何/sh结尾的字符串 |
* | 匹配0或多个前置表达式 | [A-Za-z0-9]* | z[0-9],匹配z0, z1, ..., z9 |
+ | 匹配1或多个前置表达式 | [a-z]+\.com | 匹配.com前面至少一个字符 |
? | 匹配0或1个前置表达式 | goo? | [dn]ot?,d或n后一个o,后面最多一个t,如do, dot, no, not |
{N} | 匹配N个前置表达式 | [0-9]{3} | 匹配三个数字。 |
{M, N} | 匹配M到N个前置表达式 | [0-9]{5, 9} | 匹配5到9位的数字 |
[...] | 匹配任意单个的字符 | [aeiou] | b[aeiou]匹配bat, bet, bit, bot, but [cr][23][dp][o2],匹配长度为4的字符串,如c2dp, r3p2等 |
[..x-y..] | 匹配x到y的任意单个字符 | [0-9],[A-Za-z] | [0-9],匹配0到9的任意数字 |
[^...] | 不匹配任何任何字符或任意范围内的字符 | [^aeiou], [^A-Za-z0-9] | [^aeiou]匹配非元音字母 |
(*|+|?|{})? | 以上符号组合 | .*?[a-z] | |
(...) | 分组表达式 匹配子组 | ([0-9]{3})?, f(oo|u)bar | \d+(\.\d*)?,匹配浮点数,如0.33, 72, 72.5, 75. f(oo|u)bar,匹配foobar, fubar |
\d | 匹配任何数字,同[0-9] \D表示不匹配 | data\d+.txt | 匹配data0.txt,data1.txt等 |
\w | 匹配任何数字、字母 | [A-Za-z_]\w+ | 匹配第一个字符为字母,后面更字母或数字的字符串 |
\s | 匹配任何空字符 同\n\t\r\v\f,\S为不匹配 | of\sthe | |
\b | 匹配任何单词边界 | \bThe\b \Bthe | 匹配单词The 包含字符串the,但不是以the开头 |
\N | 匹配保存的子组N | price: \16 | |
\c | 匹配特殊字符 | \., \\, \* | |
\A(\D) | 匹配字符串的开始或结尾 | \ADear | \ADear |
(?iLmsux) | 在正则表达式本身的参数里面嵌入一个或多个特殊标志 | (?x), (?im) | |
(?:...) | 未保存匹配项的组 | (?:\w+\.)* | 匹配字符串后面加一个.号,如google.,twitter. 但是不保存为子串 |
(?P<name>...) | 像普通的匹配组,只表示名称,而不标识数字ID | (?P<data>) | |
(?P=name) | 在同一字符串中,匹配由(?P<name>)分组的文字 | (?P=data) | |
(?#...) | 指定注释,忽略所有的内容 | (?#comment) | 不匹配,只是注释 |
(?=...) | 如果...紧随出现则匹配,称为正向前瞻断言 | (?=.com) | |
(?!...) | 如果...没有紧随出现则匹配,称为反正向前瞻断言 | (?!.com) | |
(?<=...) | 如果...在前面出现则匹配,称为反向后瞻断言 | (?<=800-) | |
(?<!...) | 如果...在前面没有出现则匹配,称为反反向后瞻断言 | (?<!192\.168\.) | |
(?(id/name)Y|N) | 条件匹配,如果给定ID或名字的组存在则返回为Y 否则返回N | (?(1)y|1) |