将字符串指定为:
s = "python is programming language p"
我想要得到:
s = "2ython is 2rogramming language p"
因此,我想替换所有字母“ P / p”,但前提是单词以它开头。
我试过这样的东西:
re.sub(r'(^p)*', r'/', string), but it didn't help
答案 0 :(得分:3)
您可以使用
re.sub(r'\bp\B', '2', s, flags=re.I)
请参见regex demo。
p
使用后,如果需要确保有字母
re.sub(r'\bp(?=[^\W\d_])', '2', s, flags=re.I)
详细信息
\b
-单词边界p
-p
或P
(由于re.I
)\B
-非单词边界(下一个字符必须为单词char)(?=[^\W\d_])
-积极的前瞻性,要求任何字母都必须立即显示在当前位置的右侧。import re
s = "python is programming language p"
print(re.sub(r'\bp(?=[^\W\d_])', '2', s, flags=re.I))
# => 2ython is 2rogramming language p
print(re.sub(r'\bp\B', '2', s, flags=re.I))
# => 2ython is 2rogramming language p