python - 正则表达式非贪婪精确匹配

标签 python regex

我正在使用正则表达式来查找与我的前缀列表完全匹配的字符串组。

带有前缀A、B、BB

我可以匹配三个组(Aone Atwo、BBone BBtwo、Bone Btwo)

Aone
Atwo
BBone
BBtwo
Bone
Btwo

使用正则表达式^prefix[^prefix]

但是如果我有字符串,这就会中断

incd
incm    
named   
namem

我的前缀是 inc, name

未捕获namem。我能在这里做什么有什么想法吗?

最佳答案

当您使用否定字符类“否定”单个字符时,您需要的字符不是该类中定义的字符。更重要的是,您只能通过这种方式“否定”单个字符,而不是字符序列

更通用的方法是使用否定前瞻,(?!...)

^(?:inc|name)(?!(?:inc|name))

请参阅regex demo

  • ^ - 匹配字符串开始
  • (?:inc|name) - 匹配 incname
  • (?!(?:inc|name)) - 断言不存在 incname 文字字符序列紧接在incname
  • 之后

关于python - 正则表达式非贪婪精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004706/

相关文章:

python - 在 python 中允许多种类型的参数是一个好习惯吗

python - 函数 round() 没有像我预期的那样工作

python - 如何使用 Python 将特定的选定行拆分为多行

regex - 查找结束标记格式不正确的特定 HTML 标记

c++ - 使用 QRegExp 从 URL 中提取文件名

javascript - 不接受 0-0-0 的正则表达式是什么?

Python:仅当值是元组/列表而不是字符串时如何迭代

python - 无法理解 python 中的pattern.findall() 的行为

python - lambda 中的 bool 值求值

c# - 从 cs 文件中获取方法的内容