Python 在re.sub中的反向引用中匹配大小写
我有一些python代码可以进行文本替换。例如:Python 在re.sub中的反向引用中匹配大小写,python,regex,backreference,Python,Regex,Backreference,我有一些python代码可以进行文本替换。例如: regex.sub(r"\bPhrensy", r"Frenzy", xhtml) # Phrensy -> Frenzy regex.sub(r"\bphrensy", r"frenzy", xhtml) # phrensy -> frenzy 因为输入可以有任何一种情况来开始这个单词,所以两个替换都有两行。如果我能将它压缩成一行,并为([Pp])创建
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.
请看是仅针对第一个字母,还是
h
也可以大写?有各种各样的单词和位置。我想我要找的更多的是关于反向引用替换中的广义大小写匹配。谢谢,我想应该是这样的,但是谢谢你提供了一个很好的解决方法。我会让它开放一天,以防万一有人带着魔法进来。