通過替換字符串中間全部*我想替換所有「A」的字符串由「*」中間使用正則表達式在Python 我想這使用正則表達式
re.sub(r'[B-Z]+([A]+)[B-Z]+', r'*', 'JAYANTA ')
但它輸出 - '*安踏'
我希望它是 'Ĵ* Y * NTA'
有人可以提供所需的代碼?如果可能,我想解釋我的代碼中有什麼問題。
通過替換字符串中間全部*我想替換所有「A」的字符串由「*」中間使用正則表達式在Python 我想這使用正則表達式
re.sub(r'[B-Z]+([A]+)[B-Z]+', r'*', 'JAYANTA ')
但它輸出 - '*安踏'
我希望它是 'Ĵ* Y * NTA'
有人可以提供所需的代碼?如果可能,我想解釋我的代碼中有什麼問題。
使用非wordboundary \B。
爲了確保A是由單詞字符包圍:
import re
str = 'JAYANTA POKED AGASTYA WITH BAAAAMBOO '
str = re.sub(r'\BA+\B', r'*', str)
print(str)
打印:
J*Y*NTA POKED AG*STYA WITH B*MBOO
另外,如果你想更具體的,它必須由大寫包圍字母。您可以使用lookbehead和lookahead。
str = re.sub(r'(?<=[A-Z])A+(?=[A-Z])', r'*', str)
先行斷言:
>>> re.sub(r'A(?=[A-Z])', r'*', 'JAYANTA ')
'J*Y*NTA '
在情況下,如果字開始,以 'A' 結尾:
>>> re.sub(r'(?<=[A-Z])A(?=[A-Z])', r'*', 'AJAYANTA ')
'AJ*Y*NTA '
好的解決方案,但是會裁剪'A',如果它在字符串中的索引0。 –
@ Mr.Xcoder對於這種情況,您需要檢查兩邊'>>> re.sub(r'(?<= [AZ])A(?= [AZ])',r'*','AJAYANTA' ) 'AJ * Y * NTA'' – Hackaholic
在字符串或單詞的中間?如果一個單詞的意思是,使用'r'\ BA \ B''。 –