簡體   English   中英

在 re.sub 中的反向引用中匹配大小寫

[英]Match case in backreference in re.sub

我有一些執行文本替換的 python 代碼。 一個例子是:

regex.sub(r"\bPhrensy", r"Frenzy", xhtml) # Phrensy -> Frenzy
regex.sub(r"\bphrensy", r"frenzy", xhtml) # phrensy -> frenzy

由於輸入可以有任何一種情況來開始單詞,我們有兩行用於兩個替換。 如果我可以將它壓縮成一行並帶有([Pp])的捕獲組,那就太好了,但是替換將始終是單個案例。

我已經閱讀了反向引用文檔以查看此功能是否存在,但我什么也看不到。 它可能不在語言中,但以防萬一:我是否在 Python3 的反向引用替換中缺少大小寫匹配?

理想情況下,大小寫匹配也可以識別 Unicode 大小寫,但如果它只適用於 ASCII 則是可以接受的。

沒有這樣的功能,替換反向引用始終包含捕獲到相應組中的確切文本。

您可以做的是評估匹配並在替換時應用自定義邏輯:

import re
text = "phrensy likes me. Phrensy doesn't."
print ( re.sub(r"\b([Pp])hrensy", lambda x: ("F" if x.group(1).isupper() else "f") + r"renzy", text) )
# => frenzy likes me. Frenzy doesn't.

查看Python 演示

暫無
暫無

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

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