在某些情况下,您可能知道自己不想匹配某些特定字符。比如,如果只想匹配不是来自区号650的电话号码,就需要排除这些数字。
为了实现这种排除,正则表达式提供了方括号配合脱字符(^)的用法。例如,模式 [^abc] 会匹配除字母 a、b 和 c 之外的任何单个字符。
[^abc]
下面是一些字符串,请尝试编写一个只匹配活体动物(比如猪、狗),但不匹配“沼泽”的正则模式。需要注意的是,这类排除匹配的写法与上一课介绍的包含匹配其实是同一枚硬币的两面。您可以根据实际情况选择更容易理解和编写的方式。
匹配任何以 og 结尾但不是 bog 的行,最简单的解决方案是使用表达式“[^b]og”。另外,您也可以结合上一课学到的知识,使用“[hd]og”来专门匹配 hog 和 dog,而排除 bog。需要注意的是,后者的匹配范围更严格,限制了可以匹配的字符串类型。
og
bog
hog
dog