匹配模式且不包含某些单词的字符串

时间:2016-06-07 07:59:00

标签: python regex

我正在寻找一个匹配具有特定模式的单词的正则表达式(见下文),但它不包含三个特定单词之一

模式是

0

并且我不希望包含在整个单词中的单词是' TEST',' SPECIFIC1'和' SPECIFIC2'

到目前为止,我发现正则表达式与这些单词不匹配:

[a-zA-Z0-9_~+-]{1,64}

但我无法找到如何将这两个正则表达式结合起来。

例如:

((?!(TEST|SPECIFIC1|SPECIFIC2)).)* 

有人有想法吗?

1 个答案:

答案 0 :(得分:2)

如果用^$包围表达式,可以将负前瞻与字符类放在一起来完成此操作。

^((?!(TEST|SPECIFIC1|SPECIFIC2))[a-zA-Z0-9_~+-]){1,64}$

Here's示威游行。请注意,这使用了全局和多行标志,因此出于演示目的,每行可以有一个匹配。

如果没有^$,可以移动模式以避免匹配禁用的字符串。