【问题标题】:Python regex if all whole words in string [duplicate]Python正则表达式如果字符串中的所有整个单词[重复]
【发布时间】:2017-04-11 23:56:47
【问题描述】:

我有以下一个字符串,我需要检查是否

  • 字符串包含 App2 iPhone,
  • 但不是应用程序 iPhone

我写了以下内容:

campaign_keywords = "App2 iPhone"
my_string = "[Love]App2 iPhone Argentina"
pattern = re.compile("r'\b" + campaign_keywords + "\b")
print pattern.search(my_string)

它打印无。为什么?

【问题讨论】:

  • "r'... 是不是试图表示原始字符串文字,r 作为字符串的一部分?...
  • 上面的代码给了我AttributeError: '_sre.SRE_Pattern' object has no attribute 'matches'
  • @TigerhawkT3 no - r 不是字符串的一部分。这就是我在示例中看到的在 python 中编写正则表达式的方式
  • r 应该在字符串之外,试试这个r"\b%s\b" % (campaign_keywords)
  • 啊,我看错了。 ;)

标签: python regex


【解决方案1】:
  1. 原始字符串表示法错误,r 不应在引号内。第二个\b 也应该是原始字符串。
  2. match 函数尝试匹配字符串的开头。您需要使用searchfindall

    Difference between re.search and re.match


示例

 >>> pattern = re.compile(r"\b" + campaign_keywords + r"\b")

 >>> pattern.findall(my_string)
 ['App2 iPhone']

 >>> pattern.match(my_string)

 >>> pattern.search(my_string)
 <_sre.SRE_Match object at 0x10ca2fbf8>
 >>> match = pattern.search(my_string)
 >>> match.group()
 'App2 iPhone'  

【讨论】:

  • 是的。那是我的错误。我没有从其他问题中看到如何将它与变量一起使用。很快就会修复它
  • @Dejell 我希望它与searchfindall 一起使用。
  • 是的!谢谢!
猜你喜欢
  • 2017-06-23
  • 2016-09-29
  • 2016-03-07
  • 2011-11-19
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多