`str.find`有效,但``re.finditer`找不到匹配项

时间:2017-07-20 06:17:21

标签: python regex

我有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

1 个答案:

答案 0 :(得分:1)

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

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

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

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