首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在re.sub中的反向引用中匹配大小写

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

Stack Overflow用户
提问于 2020-09-17 00:59:50
回答 1查看 63关注 0票数 2

我有一些可以进行文本替换的python代码。下面是一个例子:

代码语言:javascript
运行
复制
regex.sub(r"\bPhrensy", r"Frenzy", xhtml) # Phrensy -> Frenzy
regex.sub(r"\bphrensy", r"frenzy", xhtml) # phrensy -> frenzy

因为输入可以有两种大小写作为单词的开头,所以我们为两个替换项都有两行。如果我能用([Pp])的捕获组将它压缩到一行就好了,但是替换的总是一个案例。

我已经阅读了backreference docs以查看此功能是否存在,但我什么也看不到。它可能不在语言中,但只是以防万一:我在Python3中的反向引用替换中是否缺少大小写匹配?

理想情况下,大小写匹配也应该是Unicode大小写感知的,但如果它只适用于ASCII,这是可以接受的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 01:31:19

没有这样的功能,替换后向引用总是包含捕获到相应组中的确切文本。

您可以做的是评估匹配,并在替换时应用自定义逻辑:

代码语言:javascript
运行
复制
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 demo

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63924804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档