我想找到与特定字符序列不匹配的字符串。例如:
类似
REGEX = r'[^XY]*'
我想查找具有任意数量字符的字符串,除了X和Y彼此相邻...上面的REGEX不起作用,因为它分别阻止X和Y.
答案 0 :(得分:2)
怎么样:
if "XY" not in s:
print "matched"
else
print "not matched"
或者这是否包含在更长的正则表达式中?那么也许你想要一个负面的超前表达:
REGEXP="...(?!XY)..."
编辑:修正错误
答案 1 :(得分:1)
有几种方法可以做到这一点。
^(?!.*XY).*$
超前表达式尝试匹配字符串中任何位置的XY
序列。这是否定预测,因此如果找到一个,则匹配尝试失败。否则,.*
继续并消耗整个字符串。
^(?:(?!XY).)*$
这个重复匹配任何字符(.
),但只有在先行确认该字符不是XY
序列的开头之后。
^(?:[^X]+|X(?!Y))*$
重复匹配X
以外的任何字符中的一个或多个字符,如果X
后面没有Y
,则重复匹配。
使用前两个正则表达式,如果它们可能是源字符串中的换行符,则必须应用DOT_ALL修饰符。第三个不需要,因为它使用了否定的字符类 - [^X]
- 而不是点。