【问题标题】:Regex pattern to avoid match certain words like customize negation正则表达式模式以避免匹配某些单词,例如自定义否定
【发布时间】:2015-01-05 07:10:48
【问题描述】:

我有一个正则表达式来匹配特定的模式。比如说,一个匹配所有三个字母单词的模式。但我希望它不匹配“和”、“得到”等词……在 Python 中,最好的方法是什么。

我的模式是

r'\b\w{3}\b'

我试过了

r'(\b\w{3}\b)(?!and)'

但失败了。

【问题讨论】:

  • @nu11p01n73R - 问题是添加一些此模式应跳过的特殊单词。你解决了我以前的很多问题。谢谢大佬。
  • 我想念这个问题。完全错过了您需要匹配除and got etc以外的所有三个字母单词的要点:(
  • @nu11p01n73R - 没关系的人。你们对我们解决问题和学习新技巧很有帮助。
  • 这对我来说也是一次很棒的学习经历。很高兴总是能提供帮助:)

标签: python regex


【解决方案1】:

正则表达式从左到右匹配,前瞻也不例外。您的表达式将匹配三个字母,后面没有and(顺便说一句,这是不可能的,因为\b)。

将前瞻移到 \w 之前使其工作:

r'(\b(?!and)\w{3}\b)'

您可以在那里添加更多单词--

r'(\b(?!and|got|may)\w{3}\b)'

但是对于更多的不匹配,匹配所有三个字母的单词并使用代码去除它们的结果可能更有效。

【讨论】:

  • 谢谢哥们。所以它似乎会在从左到右移动时跳过所有的单词,比如 and,got 等???对吗?
  • 是的。有关详细说明,请参阅 regular-expressions.info/lookaround.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2011-03-08
相关资源
最近更新 更多