如果字符只出现在字符串的开头,则使用re.sub公司在Python中

2024-10-01 07:39:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我只希望第二个pk替换。在

string="paper"
d=re.sub('[^p]p','k',string)
print d

这是给我返回pker。在

我不知道为什么a也被替换了。在


Tags: restringpaperprintpker
3条回答

您可以使用反向查找并仅指定要发生的单个替换:

>>> import re
>>> s = 'paper'
>>> re.sub('(?<!^)p', 'k', s, 1)
'paker'

但如果没有正则表达式,您也可以这样做:

^{pr2}$

我一直在努力让这个词在任何单词的第一个字母上起作用,但没有具体说明:

re.sub(r'(\w)(?=\w*\1\b)', 'k', s[::-1])[::-1]

它需要一个Python不支持的可变长度lookbehind,因此为了克服这个问题,我反转字符串,使用可变长度的lookahead,然后反转结果:

^{pr2}$

对于一个句子,它使用每个单词的第一个字母:

>>> s = 'arabia bababooie paper';
>>> re.sub(r'(\w)(?=\w*\1\b)', 'k', s[::-1])[::-1]
'arkbik bakakooie paker'

尝试这样做,使用捕获组和反向引用来捕获第二个^{之前的所有以及第二个^{之后的所有

re.sub(r'(.+)p(.+)', r'\1k\2', string)
=> 'paker'

相关问题 更多 >