更改捕获组中的文本

2024-10-01 02:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在我使用的代码中,(r' ', ' '),更改为a a a a(r' a', a' a'),,而它应该更改为(r' a', ' '),。有什么更自然的方法来做这件事?如何使用re.sub进行此操作?在

当前代码,请参见here

for key, value in newgroupdict.items():
    try:
        newstr = newstr.replace(re.search(e, line).group(key), value)
    except:
        pass

示例:

^{pr2}$

{1美元^


Tags: 方法key代码inreforsearchhere
1条回答
网友
1楼 · 发布于 2024-10-01 02:22:50

使用regexp可以实现这一点有很多种方法,下面是一种:

In [23]: re.sub(r"'([^']+)'", r"'\1a'", "(r' ', ' '),", 1)
Out[23]: "(r' a', ' '),"

我不是一个好老师,而且正则表达式很难理解,但我还是会把这一点分解给您:

  • 使用re.sub,使用的参数:
    • 第一个参数是regexp
    • 第二个是替换regexp
    • 第三是主题,你想用的绳子
    • finnaly是申请替换的次数
  • 使用第一个regexp:
    1. ^{{cd1>中的{cd1>将匹配您的主题}
    2. (打开组\1,在这个和)之间发现的任何东西都在\1组中
    3. [^']匹配除'之外的任何字符
    4. +表示前一个字符类([^'])可以重复
    5. '将匹配'
  • 替代者regexp说:
    • 放入'以补偿1中被替换的'
    • 将匹配的结果放入第\1组,从2开始。到4.,所有非'字符
    • 放入'以补偿模式regexp中的最后一个'

请随意尝试一下,去掉count参数之类的东西。但在某个时刻,您将来学习regexp,因此您应该将其视为阅读the holy manual的好机会。了解regexp将使您成为一个更好的程序员,并使您能够控制文本数据。在

相关问题 更多 >