繁体   English   中英

使用regex sub(Python)复制字符串中的数字

[英]Replication of digits in a string using regex sub (Python)

我有一个s="gh3wef2geh4ht" 如何通过使用sub接收s="gh333wef22geh4444ht" 我试过这个正则表达式 我做错了什么?

s=re.sub(r"(\d)",r"\1{\1}",s)

您可以使用lambda函数捕获匹配的数字并重复它:

s="gh3wef2geh4ht"
​
re.sub(r'(\d)', lambda m: m.group(1) * int(m.group(1)), s)
# 'gh333wef22geh4444ht'

您无法在替换模式中使用正则表达式模式。 {...}不会复制第1组中捕获的文本n次。 你需要在re.sub使用lambda表达式或回调方法来实现你想要的:

import re
s = 'gh3wef2geh4ht'
s=re.sub(r"\d", lambda m: m.group() * int(m.group()), s)
print(s)

请参阅Python演示

请注意,此处不需要任何捕获组,因为整个匹配已在组0中可用。

这里, m被赋予当前匹配对象, m.group()是匹配的文本值,而int(m.group())是转换为int的数字。 因此,当匹配3时,lambda表达式只做"3" * 3并作为替换返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM