首页 > 解决方案 > Python:在同一遍中计算和替换正则表达式?

问题描述

我可以用 全局替换正则表达式re.sub(),并且可以用

for match in re.finditer(): count++

有没有办法将这两者结合起来,这样我就可以在不通过源字符串两次的情况下计算我的替换?

注意:我对替换是否匹配不感兴趣,我对同一调用中匹配的确切计数感兴趣,避免一次调用计数和一次调用替换。

标签: pythonregex

解决方案


您可以使用re.subn.

re.subn(pattern, repl, string, count=0, flags=0)

它返回(new_string, number_of_subs_made)

出于示例目的,我使用的示例与 @Shubham Sharma 使用的示例相同。

text = "Jack 10, Lana 11, Tom 12, Arthur, Mark"
out_str,count=re.subn(r"(\d+)", repl='replacement', string=text)

#out_str-->'Jack replacement, Lana replacement, Tom replacement, Arthur, Mark'
#count---> 3

推荐阅读