Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在re.sub中的反向引用中匹配大小写_Python_Regex_Backreference - Fatal编程技术网

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

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])创建

我有一些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.

请看

是仅针对第一个字母,还是
h
也可以大写?有各种各样的单词和位置。我想我要找的更多的是关于反向引用替换中的广义大小写匹配。谢谢,我想应该是这样的,但是谢谢你提供了一个很好的解决方法。我会让它开放一天,以防万一有人带着魔法进来。