簡體   English   中英

如果僅在Python中使用re.sub出現在字符串的開頭,則替換字符

[英]replace character if it appears only at beginning of string using re.sub in Python

我只希望第二個pk代替。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM