方括号取反

方括号表达式定义了一个字符序列,例如:[0-9] 等价于 [0123456789] 将匹配数字。它有助于匹配特定字符或特定的字符序列。并且,方括号表达式可以像元字符一样,代表一大批字符。

例如,\d 匹配的字符与 [0-9] 匹配的字符一样。

但是,方括号表达式更具有针对性,因此用途比元字符更广。

实例:使用方括号表达式匹配文本中所有的小写和大写元音字母,如下:

上图中,模式 [aeiouAEIOU] 将匹配小写和大写元音字母,匹配的字母将高亮;

匹配字符范围

上面介绍了使用方括号表达式匹配小写和大写元音字母,总共写了10个字符。方括号表达式还支持匹配某个范围内的字符,例如:

[A-Z]

匹配从 A 到 Z 的大写字母。范围也可以缩小,例如从 A 到 E:

[A-E]

当然,不仅仅匹配字符,还可以匹配一个范围的数字:

[0-9]

或者让范围更小,例如从 1 到 5:

[1-5]

现在发挥一下想象力,如果你想匹配 10~19 的偶数,可以将两个字符组合起来写,如下:

上图中,模式 \b[1][02468]\b 将匹配 10~19 之间的偶数,\b 匹配单词边界。

方括号表达式取反

方括号表达式取反还会匹配与方括号中声明的字符不匹配的字符。它需要结合 ^ 符号,语法如下:

[^待匹配的字符]

上面表达式中,^ 符号位于开始方括号符后面,整个模式的含义为:“不,我不想匹配这些字符”。

实例:匹配文档中所有非 a-zA-Z0-9 字符,如下:

上图中,模式 [^a-zA-Z0-9] 将匹配非 a 到 z,A 到 Z,以及 0 到 9 的字符。

并集和差集

方括号表达式可以像集合那样操作。事实上,方括号表达式另一个名称就是字符集。注意:不是所有的正则表式引擎实现程序都支持这些功能,但是 Java 支持该功能。

注意:下面的功能可以使用 Rubular 工具进行验证,官网地址:https://rubular.com/

如果你想要匹配两个方括号表达式的并集,可以这样做:

[0-3[6-9]]

运行上面模式,如下图:

正则表达式处理器会匹配0到3之间的数字或者匹配6到9之间的数字。

如果匹配差集,实质上就是减操作:

[a-z&&[^m-r]]

运行上面模式,如下图:

上面模式将匹配 a 到 z 之间的字符,但其中 m 到 r 之间的字符除外。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号