簡體   English   中英

python中不區分大小寫的字符串替換

[英]Case-insensitive string replacement in python

我可以在不區分大小寫的方法中使用以下解決方案替換字符串內容中的單詞

http://code.activestate.com/recipes/552726/ 
import re

class str_cir(str):
        ''' A string with a built-in case-insensitive replacement method '''

        def ireplace(self,old,new,count=0):
        ''' Behaves like S.replace(), but does so in a case-insensitive
        fashion. '''
            pattern = re.compile(re.escape(old),re.I)
            return re.sub(pattern,new,self,count)

我的問題是我需要完全替換我提供的單詞

para = "Train toy tram dog cat cow plane TOY  Joy   JoyTOY"

我需要將“玩具”一詞替換為“火腿”,然后我得到

'Train HAM tram dog cat cow plane HAM  Joy   JoyHAM'

我需要的是

'Train HAM tram dog cat cow plane HAM  Joy   JoyTOY'

\\b添加到關鍵字的開頭和結尾:

pattern = re.compile("\\b" + re.escape(old) + "\\b",re.I)

\\b表示單詞邊界,它與單詞開頭和結尾的空字符串匹配(由字母數字或下划線字符定義)。 參考

正如@Tim Pietzcker指出的那樣,如果您的關鍵字中包含非單詞(非字母數字和下划線)字符,它將無法正常工作。

\\b放在正則表達式的開頭和結尾。

在正則表達式中使用單詞邊界( \\b )包裹您使用的單詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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