我正在尝试使用正则表达式来匹配字符串中相同字符的一个或多个实例的序列。
范例:
string = "55544355" # The regex should retrieve sequences "555", "44", "3", "55"
我能给我一些提示吗?
您可以使用re.findall()和((.)\2*)正则表达式:
re.findall()
((.)\2*)
>>> [item[0] for item in re.findall(r"((.)\2*)", string)] ['555', '44', '3', '55']
关键部分在外部捕获组-中(.)\2*。在这里,我们捕获一个字符,(.)然后通过组号引用该字符:\2。组号为2,因为我们有一个外部捕获组,其号为1,*表示0次或多次。
(.)\2*
(.)
\2
*
您也可以通过一个捕获组和解决它re.finditer():
re.finditer()
>>> [item.group(0) for item in re.finditer(r"(.)\1*", string)] ['555', '44', '3', '55']