Python 中的單字邊界和特殊字元
在Python 正規表示式中使用b 模式進行單字邊界比對時,可能會出現意外結果搜尋模式包含特殊字符,例如方括號或大括號。
具體來說,b 僅符合下一個字元所在的單字邊界單字字元(字母數字或底線)。這表示 bSortesindex[persons]{Sortes} 不會與測試 Sortesindex[persons]{Sortes} 文字匹配,因為 Sortes 後面有一個特殊字元 (}index)。
為了確保正確匹配,請考慮以下解決方案:
自適應詞邊界:
使用在字串開頭或結尾或具有不同單字字元狀態的字元之間匹配的自適應單字邊界:
re.search(r'(?:(?!\w)|\b(?=\w)){}(?:(?<=\w)\b|(?<!\w))'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
明確的詞邊界:
使用明確的單字邊界,嚴格要求匹配兩邊都沒有單字字元:
re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
明確處理非單字邊界:
使用W 或$ 明確處理非單字邊界,例如:
re.search(r'\b' + re.escape('Sortes\index[persons]{Sortes}') + '(\W|$)', 'test Sortes\index[persons]{Sortes} test')
此外,考慮使用否定環視來更靈活地定義單字邊界。例如,如果當前位置前面緊鄰一個單字字符,則 (?
以上是如何使用 Python 的單字邊界可靠地匹配帶有特殊字元的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!