python - 正则表达式:允许包含 "foo"的字符串,但如果同一字符串也包含 "bar",则不允许

标签 python regex

我的输入是文件名,一些示例:

/some/file/path/thefooisgood.txt
/some/file/path/thisfooisalsogood.txt
/some/file/path/thisfooalsohasbar.txt

我想查找/允许包含子字符串 foo 的所有文件名/路径,只要该字符串没有子字符串 bar在其中。

子字符串 bar 可能出现在文件路径中的任何位置,并不总是出现在 foo 之后,有时可能出现在路径名中,而不仅仅是文件名中。 foo 也是如此。我似乎无法正确理解。

最佳答案

您可以使用基于负向前瞻的正则表达式,如下所示:

^(?!.*bar).*foo

RegEx Demo

详细信息:

  • (?!.*bar):断言输入中的任何位置都没有 bar
  • .*foo:匹配输入中任意位置的foo

关于python - 正则表达式:允许包含 "foo"的字符串,但如果同一字符串也包含 "bar",则不允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51774253/

相关文章:

python - 有没有办法在一个命令中获取 python 中的中位数索引?

python - 我在 python 速成类(class)书中学习文件和异常。无法弄清楚为什么它说 votes = Judge.read() 没有可写的属性

python - 使用正则表达式检测 Twitter 句柄

C++ 将 Boost Regex 匹配结果转换为其他格式

python - 使用 Torch 进行数值优化,让优化器得到一个空参数列表,

python - Python(Numpy/Scipy)中的 Varimax 旋转?

python - 在 HTML 中提取 URL 哪个更快? [html.parser.HTMLParser] 或 [re.match] 或其他

Python 正则表达式屏蔽字符串中的键值对

javascript - 用JS替换网页中的文字

regex - 替换所有出现的字符,除非被两个不同的模式包围