如何替换字符串中的首字母

时间:2019-02-20 18:39:59

标签: python regex

将字符串指定为:

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

1 个答案:

答案 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)

请参见another regex demo

详细信息

  • \b-单词边界
  • p-pP(由于re.I
  • \B-非单词边界(下一个字符必须为单词char)
  • (?=[^\W\d_])-积极的前瞻性,要求任何字母都必须立即显示在当前位置的右侧。

Python demo

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