python - 如何应用方法来捕获 re.sub 中的组

标签 python python-3.x python-re

我想使用 re.sub() 替换字符串的一部分,但是我找不到将方法应用于捕获组的方法。我的代码如下所示(请记住,这只是为了复制而不是我的实际问题):

import re

mystring = 'Hello NICE to meet you'
mystring = re.sub('(Hello )(NICE)( to meet you)', r'\1' + r'\2'.lower() + r'\3', mystring)
print(mystring)

>>> Hello NICE to meet you

上面的例子中,lower()不会影响r'\2',有什么办法得到这个re.sub > 返回“你好,很高兴认识你”

最佳答案

您可以使用函数代替字符串作为替换。它将匹配对象作为参数,并应返回替换的字符串,如 the documentation for re.sub 中所述。 :

import re

def replace(match):
    return match.group(1) + match.group(2).lower() + match.group(3)


mystring = 'Hello NICE to meet you'
mystring = re.sub('(Hello )(NICE)( to meet you)', replace, mystring)
print(mystring)
# Hello nice to meet you

关于python - 如何应用方法来捕获 re.sub 中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63396402/

相关文章:

python - 找不到套接字服务器的匹配发行版

python - 如何在 tkinter 中验证输入字段

python - re.findall 不返回完整匹配?

python - 使用正则表达式提取特定单词之前的数字

python - 无法解码任何 JSON 对象 - tastypie - curl

python - pandas 中 pd.join (how ='left' ) 的意外结果

python - GPT-2 从检查点继续训练

python - Numpy 关联底层代码

python-3.x - 相当于 pandas.shift() 函数的 numpy 数组?

python - 为什么我收到错误 -"re.error: multiple repeat at position 2"