首页 > 解决方案 > '(?=' 和 ')' 在这里做什么?

问题描述

这里的代码是找出子字符串的数量。我尝试了其他方法,但使用这一行代码更短并且工作方式相同。

count=len(re.findall('(?='+sub_string+')', string))

这可能会提供一些上下文。

import re
def count_substring(string, sub_string):
    count=len(re.findall('(?='+sub_string+')', string))
    return count

标签: pythonregex

解决方案


'?=' 是积极前瞻性断言的一部分。您正在捕获匹配项,但不包括您的 sub_string。

出于您的目的,这可能更简洁。

count = len(re.findall(sub_string, string))

可以在此处找到对正则表达式断言的更全面的解释。 https://www.regular-expressions.info/lookaround.html


推荐阅读