正则表达式否定两个或两个词

时间:2011-03-07 12:10:49

标签: regex

我有一个很长的列表,其中的代码段看起来像这样:

X1000ABC
X1100ABC
X2000ABC
X2200ABC
X3000ABC
X3300ABC

有人可以解释我如何匹配 X1000ABCX2000ABC {{1}}之外所有字符串

我的问题是我有一个很长(并且可能在增长)的代码列表,这些代码只有4位数字不同。

需要排除其中两个代码(我知道哪两个代码)

我尝试使用否定前瞻,但是......我可能错误地使用了语法,因为我似乎无法“或”使用它。或者......我只是不明白前瞻。

任何帮助表示赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:4)

您可以使用正则表达式:

^(?!X1000ABC$)(?!X2000ABC$)X[0-9]{4}ABC$

See it on Rubular

答案 1 :(得分:2)

以下是我在JavaScript支持的正则表达式中的表现:

(?!X[12]000ABC)X[0-9]{4}ABC

这在前瞻中使用了一个字符类。如有必要,请在开头和结尾添加^$个锚点(包括$在前瞻中)。

答案 2 :(得分:1)

这个怎么样?

X(?![12]000)\d{4}ABC

在python中测试

>>> x
'X1000ABC\nX1100ABC\nX2000ABC\nX2200ABC\nX3000ABC\nX3300ABC'
>>> re.findall("X(?![12]000)\d{4}ABC",x)
['X1100ABC', 'X2200ABC', 'X3000ABC', 'X3300ABC']