用于排除单词/字符串的正则表达式

我有一个正则表达式如下:

^/[a-z0-9]+$

它匹配诸如/hello/hello123之类的字符串。

然而,我希望它排除一些字符串值,如/ignoreme/ignoreme2

我尝试了一些变种,但似乎不能得到任何工作!

我最近一次微弱的尝试是

^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$

任何帮助都将不胜感激:-)

916030 次浏览

当你想要排除这两个单词时,你需要一个连词:

^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$

现在两个条件都必须为真(既不允许ignoreme也不允许ignoreme2)才能匹配。

这应该做到:

^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)

你可以添加尽可能多的被忽略的单词,这是一个简单的PHP实现:

$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');


preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);

这里还有另一种方法(使用消极的预见性):

^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$

注意:只有一个捕获表达式:([a-z0-9]+)

简单:

re.findall(r'/(?!ignoreme)(\w+)',  "/hello /ignoreme and /ignoreme2 /ignoreme2M.")

你会得到:

['hello']

这将排除搜索结果中包含ignoreme的所有行。它也将工作得很好,当有任何字符在一行

^((?!ignoreme).)*$
这对我很有用: ^((?!\ignoreme1\b)(?!\ignoreme2\b)(?!\ignoreme3\b).)*$ < / p >

这在python3中对我有用。make_column_selector用于从数据帧中包含和排除某些列。排除^(?!(col2|co4|col6)).*$

categoral_selector = make_column_selector(pattern = "(col2|co4|col6)")
numeric_selector = make_column_selector(pattern = "^(?!(col2|co4|col6)).*$")
$ uptime -p
// up X minutes


$ uptime -p | grep -o '[^up].*$'
// X minutes


所以'[^up].*$'排除"up"输出。