正则表达式 - 否定式前项匹配
考虑这一问题:如何编写正则表达式,使得其可以识别不以某个字符(串) 开头的字符串?
如果是单个字符,比较简单,如可以使用:[^A-F]
表示指定范围外的任意字符。如果不是连续的,也没关系,^[^AEIOU]
表示非大写元音字母开头的字符。
。
否定式向前匹配 是向前匹配,使用?!
作为标记。根据匹配的字符后来决定是否匹配。对于向前匹配,出现在指定项后面的字符序列不会被正则表达式返回。如果不存在一个特定的序列,称之为否定式向前匹配。
据此,解决不以某字符串str
开头的表达式为^(?!str)
(?:str) 非捕获组
(?=str) 肯定式向前查找
(?!str) 否定式向前查找
(?<=str) 肯定式向后查找
(?<!str) 否定式向后查找
附:在线正则匹配工具 https://rubular.com/ 参考:https://segmentfault.com/a/1190000019266662
License:
CC BY 4.0