【问题标题】:`str.find` works, but `re.finditer` does not find a match [duplicate]`str.find` 有效,但 `re.finditer` 找不到匹配项 [重复]
【发布时间】:2017-12-25 16:08:39
【问题描述】:

我有 2 个字符串,我想在另一个字符串中找到一个字符串的所有位置。 String.find 有效,但不是正则表达式。

sub:(不想)调用

str1:我不能(不想)打电话

 str1.find(sub) returns 7 but 
   [(m.start(0), m.end(0)) for m in re.finditer(sub,str1)] returns empty list

【问题讨论】:

    标签: python regex


    【解决方案1】:

    括号是正则表达式中的元字符(用于捕获组),因此如果要按字面处理,您需要将它们转义:

    sub = '\(dont want to\) call in'
    

    或者,您可以使用re.escape,它会自动为您转义元字符:

    re.finditer(re.escape('(dont want to) call in'), str1)
    

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2020-01-30
      • 1970-01-01
      • 2017-04-09
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多