Python 计算字符串中字符串的重叠出现次数
我想计算字符串中字符串的重叠出现次数Python 计算字符串中字符串的重叠出现次数,python,string,Python,String,我想计算字符串中字符串的重叠出现次数 import re def function(string, sub_string): match = re.findall('(?='sub_string')',string) return len(match) 它显示语法错误: File "solution.py", line 3 return len(re.findall('(?='sub_string')',string))
import re
def function(string, sub_string):
match = re.findall('(?='sub_string')',string)
return len(match)
它显示语法错误:
File "solution.py", line 3
return len(re.findall('(?='sub_string')',string))
^
SyntaxError: invalid syntax.
但是如果我写
import re
def function(string, sub_string):
match = re.findall('(?='+sub_string+')',string)
return len(match)
那就好了。为什么我需要在两侧都包含+呢?这就是Python中字符串连接的工作方式 您在这里所做的
(?='+sub_string+')
是,例如sub_string='hello'
:
”(?=“+”你好“+”)”
如果没有连接运算符,变量在两个字符串之间就没有位置
在Python3.6中,您可以使用f字符串,只需使用一个字符串——我可能会在这里这样做:
f”(?={sub_string})
+
用于串接字符串。如果要串接sub_string
末尾的右括号,需要使用+
,因为python是这样理解的。这个问题与正则表达式无关,只与字符串串接的工作方式有关。简言之,如果您指定了一个变量,则可以在不使用+
的情况下将字符串相互追加。在表达式中,需要使用+
。可能会有一些极端情况,但根据经验,只需使用+
并明确说明您正在做什么。@WiktorStribiżew,谢谢如果您提供了字符串连接的替代方法,则无需这样做。例如,您可以使用字符串格式化工具将模式保持为一个字符串:re.findall(('(?={})'.format(sub_string)),string)