![](/img/trans.png)
[英]python re.sub, substitute a pattern only if it appears at the beginning of a string
[英]replace character if it appears only at beginning of string using re.sub in Python
我只希望第二個p
被k
代替。
string="paper"
d=re.sub('[^p]p','k',string)
print d
這是給我回pker
。
我不知道為什么a
也被更換。
您可以在后面使用否定的外觀,並僅指定要進行的單個替換:
>>> import re
>>> s = 'paper'
>>> re.sub('(?<!^)p', 'k', s, 1)
'paker'
但是然后您可以在沒有正則表達式的情況下執行此操作:
s[0] + s[1:].replace('p', 'k', 1)
嘗試使用捕獲組和反向引用來捕獲第二個p
之前的所有內容以及第二個p
之后的所有內容:
re.sub(r'(.+)p(.+)', r'\1k\2', string)
=> 'paker'
我一直在弄亂試圖使它適用於任何單詞的第一個字母-而沒有指定它:
re.sub(r'(\w)(?=\w*\1\b)', 'k', s[::-1])[::-1]
它需要可變長度的lookbehind,Python不支持,因此,為了克服這個問題,我反轉了字符串,使用可變長度的lookahead,然后反轉了結果:
>>> s = 'paper';
>>> re.sub(r'(\w)(?=\w*\1\b)', 'k', s[::-1])[::-1]
'paker'
對於一個句子,它使用每個單詞的第一個字母:
>>> s = 'arabia bababooie paper';
>>> re.sub(r'(\w)(?=\w*\1\b)', 'k', s[::-1])[::-1]
'arkbik bakakooie paker'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.