我无法找到合适的正则表达式来匹配任何不以某些条件结尾的字符串。例如,我不想匹配任何以 a
结尾的内容。
这匹配
b
ab
1
这不匹配
a
ba
我知道正则表达式应该以 $
结尾来标记结束,尽管我不知道它前面应该是什么。
编辑:原始问题似乎不是我的案例的合法示例。那么:如何处理多个字符呢?说什么不以 ab
结尾?
我已经能够使用this thread解决这个问题:
.*(?:(?!ab).).$
虽然这样做的缺点是,它不匹配只有一个字符的字符串。
最佳答案
您没有给我们语言,但如果您的正则表达式风格支持 look behind assertion ,这就是您所需要的:
.*(?<!a)$
(?<!a)
是一个否定的后向断言,确保在字符串末尾(或带有 m
修饰符的行)之前不存在字符“a”。
您还可以轻松地用其他字符扩展它,因为它检查字符串而不是字符类。
.*(?<!ab)$
这将匹配任何不以“ab”结尾的内容,see it on Regexr
关于不以给定后缀结尾的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398471/