正则表达式(2) -- 模式匹配符

正则表达式(1)

 

2. 正则表达式语法

正则表达式的语法主要就是对各个元字符功能的描述。元字符从功能上大致分为:模式匹配符,定位符与原义字符,限定符,选择匹配符,特殊字符,字符匹配符,分组组合和反向引用符。

2.1 模式匹配符

下面的表格列出了在正则表达式中能够使用的字符列表及相关描述。

字符 描述
\  指出接着的字符为特殊字符。例如,"/b/" 匹配字符 "b",通过在 "b" 前面加一个反斜杠,也就是"/\b/",则该字符变成特殊字符,表示匹配一个单词的分界线。
^  表示匹配的字符必须在最前边。例如,"/^A/" 不匹配 "an A" 中的 "A",但匹配 "An A" 中最前面的 "A"。
$    与^类似,匹配最末的字符。例如,"/t$/" 不匹配 "eater" 中的 "t",但匹配 "eat" 中的 "t"。
*  匹配*前面的字符0次或n次。例如,"/bo*/" 可以匹配 "A ghost booooed" 中的 "booo" 或 "A bird warbled" 中的 "b",但不匹配 "A goat grunted"中的任何字符。
+  匹配+前面的字符1次或n次。等价于"{1,}"。例如,"/a+/" 匹配 "candy" 中的 "a" 和 "caaaaaandy" 中的所有 "a" 。
?    匹配?前面的字符0次或1次。例如,"/e?le?/" 匹配 "angel" 中的 "el" 和 "angle" 中的 "le"。
.  (小数点) 匹配除换行符外的所有单个字符。 例如,"/.n/" 匹配 "nay, an apple is on the tree" 中的 "an" 和 "on",但不匹配 "nay"。
(x)  匹配 "x" 并记录匹配的值。例如,"/(foo)/" 匹配和记录 "foo bar" 中的 "foo"。匹配子串能被结果数组中的索引[1],...[n]返回,或被RegExp对象的属性$1...$9返回
x|y  匹配 "x" 或者 "y"。例如,"/green|red/" 匹配 "green apple" 中的 "green" 和 "red apple" 中的 "red"。
{n}  这里的n是一个正整数。匹配前面的n个字符。例如,"/a{2}/" 不匹配 "candy" 中的 "a",但匹配 "caaandy" 中前面的两个 "a"。
{n,}

 这里的n是一个正整数。匹配至少n个前面的字符。例如,"/a{2,}/" 不匹配 "candy" 中的 "a",但匹配 "caaaaandy" 中的所有 "a"。

{n,m}  这里的n和m都是正整数。匹配至少n个最多m个前面的字符。例如, "/a{1,3}/" 不匹配 "cndy" 中的任何字符。但匹配 "candy" 中的 "a","caandy" 中的前面两个 "a"和 "caaaandy" 中的前面3个 "a"。需要注意的是,即使 "caaaandy" 中有很多个 "a",但只匹配前面的3个 "a"。
[xyz]  字符列表,匹配列出的任意字符。可以通过连字符"-"指出一个字符范围。例如, "[abcd]" 跟 "[a-d]" 一样,它们匹配 "brisket" 中的 "b" 和 "ache" 中的 "a"。
[^xyz]  字符补集。匹配除了列出的字符外的所有东西。可以使用连字符 "-" 指出一个字符范围。
[\b]  匹配一个空格(不要与 "/b" 混淆)
 \b    匹配一个单词的分界线,如一个空格。例如,"/\bn\w/"匹配 "noonday"中的"no","/\wy\b/"匹配 "possibly yesterday" 中的 "ly"。 
 \B    匹配一个单词的非分界线。例如,"/\w\Bn/" 匹配 "noonday" 中的 "on","/y\B\w/" 匹配 "possibly yesterday" 中的 "ye"。
 \cX    X是一个控制字符。匹配一个字符串的控制字符。例如,"/\cM/"匹配一个字符串中的control-M
 \d    匹配一个数字,等价于 "[0-9]"。例如,"/\d/" 或 "/[0-9]/" 匹配 "B2 is the suite number" 中的 "2"
 \D    匹配任何的非数字,等价于 "[^0-9]"。例如,"/\D/" 或 "/[^0-9]/" 匹配 "B2 is the suite number" 中的 "B" 
 \f    匹配一个表单符
 \n    匹配一个换行符 
 \r    匹配一个回车符
 \s    匹配一个单个white空格符,包括空格、tab、form feed、换行符。等价于 "[\f\n\r\t\v]" 
 \S    匹配一个制表符
 \v    匹配一个顶头制表符
 \t    匹配一个制表符 
 \w    匹配所有的数字和字母以及下划线,等价于"[A-Za-z0-9]" 
 \W    匹配除数字、字母、下划线外的其他字符。等价于"[^A-Za-z0-9]" 
\n     这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。
 \ooctal和\xhex    这里的 "\ooctal" 是一个八进制的 escape值,而 "\xhex" 是一个十六进制的escape值,允许在一个正则表达式中嵌入ASCII码。
 

 

posted @ 2016-04-06 22:39  狸子同学  阅读(238)  评论(0编辑  收藏  举报