python - 如何使用 re.IGNORECASE 和 .sub 保留大小写?

标签 python regex

import re

def bold_partial(long_string, partial):

    replacer = re.compile(partial, re.IGNORECASE)
    new_long_string = replacer.sub('<b>' + partial + '</b>', long_string)
    print new_long_string


bold_partial('My name is Roger the Shrubber. I arrange, design, and sell shrubberies.', 'roger the shrubber')

返回:
我的名字是灌木罗杰。我布置、设计和销售灌木。

我想退回原件:

我的名字是灌木罗杰。我布置、设计和销售灌木。

抱歉,我是个菜鸟。任何帮助将不胜感激。

最佳答案

def bold_partial_rep(matchobj):
    return '<b>' + matchobj.group(0) + '</b>'

def bold_partial(long_string, partial):
    replacer = re.compile(partial, re.IGNORECASE)
    new_long_string = replacer.sub(bold_partial_rep, long_string)
    print new_long_string

或者,如果您想缩短代码,您可以删除新函数并在 bold_partial() 中使用以下行:

new_long_string = replacer.sub(lambda m: '<b>%s</b>' % m.group(0), long_string)

关于python - 如何使用 re.IGNORECASE 和 .sub 保留大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625317/

相关文章:

python - Pytesseract 回溯错误 "file not found"

python - pygame 在屏幕上显示变量不起作用

python - 当安装多个版本的 python 时,tox 使用错误版本的 pip

c# - C#中查找关键字最快的算法

Javascript RegExp 替换以获取时间

python 使用较小的二维数组来映射另一个较大的数组

python - 如何找到 iGraph 在 python 中创建的图中的顶点数?

java - 如何将 `regex` 嵌入到 `By.xpath...` 中?

regex - 指定 'inverted' 范围的 sed 行号范围

python - 我可以使用带有 Pandas 的正则表达式在两个数据帧之间执行左连接/合并吗?