浏览器之家


世纪之窗正则表达式的基本语法

.
匹配除换行符 \n 之外的任何单个字符. 要匹配包括 \n 在内的任何字符, 可以使用 [.\n] 模式.

\
转义字符, 用于转义紧跟的字符. 详情请参考转义字符表.

[...]
定义一个字符类, 匹配方括号内的任意一个字符.
字符集中的元字符: "] \ ^ -". 若字符集中需要匹配元字符, 请使用 \元字符.
例: [ab\^c] 可以匹配单个字符 a,b,^或c.

[^...]
定义一个非匹配字符类的开始处, 它表示否定该字符类, 即匹配不在方括号中出现的任何字符.
例: [^abc] 可以匹配 e, 7, z 等除 a, b 和 c 之外的字符.

^
如果 ^ 出现在正则表达式最前边, 它匹配输入字符串的开头.
例: ^[abc] 匹配输入字符串开头的 a, b 或 c , 如 about us, be it, can you?.

$
放在正则表达式的最后, 匹配输入字符串的末端.
例: [0-9]$ 匹配输入字符串末端的一个数字字符, 如 last 9, add 1.

|
"或"分隔符, 分隔多个表达式, 只须匹配其中一个.
例: th(is|at|ese|ose) 可以匹配 this, that, these 或 those.

-
在字符类中, 指定一个字符范围.
例: [0-9] 匹配 0 到 9 的数字.

?
匹配前面的子表达式零次或一次. ? 等价于 {0,1} .
例: do(es)? 可以匹配 do 或 does.

+
匹配前面的子表达式一次或多次. + 等价于 {1,} .
例: zo+ 能匹配 zo 以及 zoo 或者 zoooo, 但不能匹配 z .

*
匹配前面的子表达式零次或多次. * 等价于 {0,} .
例: zo* 能匹配 z 以及 zoo .

{n}
匹配前面的子表达式确定的 n 次. n 是一个非负整数.
例: o{2} 不能匹配 Bob 中的 o , 但是能匹配 food 中的 oo .

{n,}
匹配前面的子表达式至少 n 次. n 是一个非负整数. e{1,} 等价于 e+ , e{0,} 则等价于 e* .
例: e{2,} 不能匹配 Bed 中的 e , 但是能匹配 feel 和 feeeeel 中所有的 e .

{n,m}
匹配前面的子表达式最少 n 次且最多 m 次. n<=m, m 和 n 均为非负整数. 在逗号和两个数字之间不能有空格.
o{0,1} 等价于 o? .
例: o{1,3} 可以匹配 fooooood 中的前三个 o .

??,+?,*?,{n}?,{n,}?,{n,m}?
?
,+,*,{n},{n,},{n,m}的非贪婪匹配版本, 非贪婪匹配在匹配时会尽可能匹配较少的字符.
例: 输入字符串为 <abc><def>
使用非贪婪匹配 <.*?> 会匹配 <abc> .
使用贪婪匹配 <.*> 会匹配整个 <abc><def> .

$i
表示前面用 () 捕获的第 i 个子表达式. i = 1, 2, 3...9
例: $1 表示前面用 <a[^>]*?href=(".*?")[^>]*?> 捕获 <a href="http://bbs.ioage.com/">得到的 "http://bbs.ioage.com/" 部分. 用于 replace 及 return 部分

(pattern)
表达式分组操作符. 用于分隔子表达式和返回部分匹配结果. 返回的结果可以在替换操作的时候用 $1 - $10 表示.
例: (\d+,)*\d+ 可以匹配逗号分隔的数字字符串, 如 41 或 1,23,456 .

(?:pattern)
非获取匹配分组, 匹配 pattern 但不返回匹配结果, 这样可以节省资源, 也不容易与获取匹配的结果混淆.

(?=pattern)
肯定正查(Positive Lookahead). 作用类似 $, 匹配任何後缀有符合 pattern 字符串的之前的位置,
这是一个非获取匹配.
例: Windows (?=95|98|NT|2000) 匹配 Windows 2000 中的 Windows, 而不匹配 Windows 3.1 中的 Windows.
最终返回的是 Windows 而不包含 pattern 匹配的 2000 部分.

(?!pattern)
否定正查(Negative Lookahead). 作用类似否定的 $, 匹配任何後缀不符合 pattern 字符串的之前的位置,
这是一个非获取匹配.
例: Windows(?!95|98|NT|2000) 匹配 Windows 3.1 中的 Windows, 但不匹配 Windows 2000 中的 Windows.
最终返回的是 Windows 而不包含 pattern 匹配的 3.1 部分.

 

正则表达式的转义字符表

\w
表示任意字母和数字, 等价于 [a-zA-Z0-9]

\W
表示任意非字母和数字字符, 等价于[^a-zA-Z0-9]

评论

没安装畅言模块