python - 用每个子字符串的长度替换python中的子字符串

标签 python regex string

如何替换子字符串,比如说以大写字母开头的单词,以及该子字符串的长度,也许使用正则表达式。

例如: 使用正则表达式 "\b[A-Z]+[a-z]*\b"

"He got to go to New York"

应该改成这样:

"2 got to go to 3 4"

我使用它的实际场景有点不同,但我认为那个场景更清晰。

最佳答案

您可以使用 re.sub为此,它接受一个可调用对象。每次发现模式的非重叠出现时,都会使用匹配对象调用该可调用对象。

>>> s = "He got to go to New York"
>>> re.sub(r'\b([A-Z][a-z]*)\b', lambda m: str(len(m.group(1))), s)
'2 got to go to 3 4'

关于python - 用每个子字符串的长度替换python中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367834/

相关文章:

python - Django继承: how to have one method for all subclasses?

regex - 使用正则表达式进行日志解析

R计算连续列中模式匹配的数量

将字符串复制到结构体 C 中

java - 在java编程中使用String被认为是邪恶的吗?

python - 为什么 python 的 pickle 没有将方法序列化为默认参数?

python - 如何根据列值对 Numpy 二维矩阵中的行进行分组?

python - 搜索目录名具有特定模式的文件

javascript - 通过 HTML 验证 (RegEx) 验证电子邮件中的域

javascript - 如何使用 javascript 正则表达式搜索标签内的特定属性并删除它