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

oxiaedzo  于 2023-03-04  发布在  其他
关注(0)|答案(7)|浏览(191)

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

^/[a-z0-9]+$

这与/hello/hello123等字符串匹配。
但是,我希望它排除一些字符串值,如/ignoreme/ignoreme2
我已经尝试了一些变种,但似乎不能得到任何工作!
我最近的一次尝试

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

i34xakig1#

下面是另一种方法(使用negative look-ahead):

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

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

ctehm74n

ctehm74n2#

这应该可以做到:

^/\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);
fquxozlt

fquxozlt3#

由于您希望排除这两个单词,因此需要一个变戏法:

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

现在,两个条件都必须为真(不允许使用 ignoremeignoreme2)才能匹配。

6tr1vspr

6tr1vspr4#

这将从搜索结果中排除所有包含 ignoreme 的行。当行中包含任何字符时,它也会非常有效

^((?!ignoreme).)*$
11dmarpk

11dmarpk5#

这对我很有效:^((?!\ignoreme1\b)(?!\ignoreme2\b)(?!\ignoreme3\b).)*$

icnyk63a

icnyk63a6#

我在python 3.x中使用机器学习管道make_column_selector来包含和排除 Dataframe 中的某些列。要排除^(?!(col 2|二氧化碳|第6栏)).*$

categoral_selector = make_column_selector(pattern = "(col2|co4|col6)")
numeric_selector = make_column_selector(pattern = "^(?!(col2|co4|col6)).*$")
vof42yt1

vof42yt17#

更简单:

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

您将获得:

['hello']

相关问题