揭开正则表达式的神秘面纱(regexlab出品)

2020-02-22 21:59:10王振洲


举例5:表达式 "(?<=d{4})d+(?=d{4})" 在匹配 "1234567890123456" 时,将匹配除了前4个数字和后4个数字之外的中间8个数字。由于 JScript.RegExp 不支持反向预搜索,因此,本条举例不能够进行演示。很多其他的引擎可以支持反向预搜索,比如:Java 1.4 以上的 java.util.regex 包,.NET 中System.Text.RegularExpressions 命名空间,以及本站推荐的最简单易用的 DEELX 正则引擎。

3. 其他通用规则

还有一些在各个正则表达式引擎之间比较通用的规则,在前面的讲解过程中没有提到。

3.1 表达式中,可以使用 "xXX" 和 "uXXXX" 表示一个字符("X" 表示一个十六进制数)

形式

字符范围
xXX 编号在 0 ~ 255 范围的字符,比如: 空格可以使用 "x20" 表示
uXXXX 任何字符可以使用 "u" 再加上其编号的4位十六进制数表示,比如: "u4E2D"

3.2 在表达式 "s","d","w","b" 表示特殊意义的同时,对应的大写字母表示相反的意义

表达式

可匹配
S 匹配所有非空白字符("s" 可匹配各个空白字符)
D 匹配所有的非数字字符
W 匹配所有的字母、数字、下划线以外的字符
B 匹配非单词边界,即左右两边都是 "w" 范围或者左右两边都不是 "w" 范围时的字符缝隙

3.3 在表达式中有特殊意义,需要添加 "" 才能匹配该字符本身的字符汇总

字符

说明
^ 匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "^"
$ 匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "$"
( ) 标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "(" 和 ")"
[ ] 用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "[" 和 "]"
{ } 修饰匹配次数的符号。要匹配大括号,请使用 "{" 和 "}"
. 匹配除了换行符(n)以外的任意一个字符。要匹配小数点本身,请使用 "."
? 修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "?"
+