在Python中将pa $$ word更改为pa \ $ \ $ word

时间:2014-04-23 05:25:30

标签: python regex

我有一个字符串pa$$word。我想将此字符串更改为 pa\$\$word 。必须将其更改为仅限2个或更多此类字符,而不能更改为pa$word。替换必须发生多次,其中n是" $"符号。例如,pa$$$$word变为pa\$\$\$\$wordpa$$$word变为pa\$\$\$word

我该怎么做?

3 个答案:

答案 0 :(得分:0)

我相信你之后的正则表达式是:

[$]{2,}

将匹配2个或更多字符$

答案 1 :(得分:0)

import re

def replacer(matchobj):
    mat = matchobj.group()
    return "".join(item for items in zip("\\" * len(mat), mat) for item in items)

print re.sub(r"((\$)\2+)", replacer, "pa$$$$word")
# pa\$\$\$\$word

print re.sub(r"((\$)\2+)", replacer, "pa$$$word")
# pa\$\$\$word

print re.sub(r"((\$)\2+)", replacer, "pa$$word")
# pa\$\$word

print re.sub(r"((\$)\2+)", replacer, "pa$word")
# pa$word

((\$)\2+) - 我们在这里创建了两个捕获组。首先是整个匹配,可以在后面称为\1。第二个捕获组是嵌套的,捕获字符串\$并称为\2。因此,我们首先匹配$一次并确保它在\2+之后连续存在多次。

因此,当我们找到这样的字符串时,我们使用匹配的字符串和捕获的组调用replacer函数。在replacer函数中,我们使用matchobj.group()得到整个匹配的字符串,然后我们只是将匹配的字符串与\交错。

答案 2 :(得分:-1)

这应该有帮助

  import re

  result = re.sub("\$", "\\$", yourString)

或者你可以尝试

 str.replace("\$", "\\$")