如何使用正则表达式替换子字符串,例如以大写字母开头的单词,以及该子字符串的长度。
例如:
使用正则表达式"\b[A-Z]+[a-z]*\b"
"他必须去纽约"
应该转化为:
" 2必须去3 4"
我使用它的实际情况有点不同,但我认为这种情况更清楚。
答案 0 :(得分: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'
答案 1 :(得分:0)
这并不简洁,但如果你想避免使用正则表达式和lambda,你可以这样写:
string = "He got to go to New York"
string = string.split()
for word in range(len(string)):
if string[word][0].isupper():
string[word] = str(len(string[word]))
print(" ".join(string))