Python正则表达式多行替换
我搜索了现有的问题,但它们似乎没有回答这个特定的问题 我有以下python程序Python正则表达式多行替换,python,regex,python-2.7,Python,Regex,Python 2.7,我搜索了现有的问题,但它们似乎没有回答这个特定的问题 我有以下python程序 description = """\ before {cs:id=841398|rep=myrepo}: after """ pattern = re.compile(r"(.*)\{cs:id=(.*)\|rep=(.*)\}(.*)") 我需要替换描述中的正则表达式,如下所示,但我无法正确地获得模式和替换语法 description="""\ before <a href="http://crucib
description = """\
before
{cs:id=841398|rep=myrepo}: after
"""
pattern = re.compile(r"(.*)\{cs:id=(.*)\|rep=(.*)\}(.*)")
我需要替换描述中的正则表达式,如下所示,但我无法正确地获得模式和替换语法
description="""\
before
<a href="http://crucible.app.com:9090/myrepo?cs=841398">841398</a> : after
"""
crucible.app.com:9090是一个常数,我之前已经有了,所以我基本上需要用我的替代品来替换这个图案
有人能告诉我什么是最好的python正则表达式查找和替换语法吗?在您的模式中不需要第一个和最后一个。*。要在替换字符串中写回捕获的组,请使用\1和\2: 您还可以使用命名组:
pattern = re.compile(r"\{cs:id=(?P<id>[^|]*)\|rep=(?P<rep>[^}]*)\}")
然后在替换字符串中:
"<a href=\"http://crucible.app.com:9090/\g<repo>?cs=\g<id>\">\g<id></a>"
在您的模式中不需要第一个和最后一个。*。要在替换字符串中写回捕获的组,请使用\1和\2: 您还可以使用命名组:
pattern = re.compile(r"\{cs:id=(?P<id>[^|]*)\|rep=(?P<rep>[^}]*)\}")
然后在替换字符串中:
"<a href=\"http://crucible.app.com:9090/\g<repo>?cs=\g<id>\">\g<id></a>"
使用/:
\1、\2参考匹配的组1、2
我稍微修改了正则表达式
不需要逃避{,}。
在{..}之前、之后删除了捕获组。
已使用非贪婪匹配:*?
使用/:
\1、\2参考匹配的组1、2
我稍微修改了正则表达式
不需要逃避{,}。
在{..}之前、之后删除了捕获组。
已使用非贪婪匹配:*?
你调查过了吗?你调查过了吗?
>>> pattern = re.compile(r"{cs:id=(.*?)\|rep=(.*?)}")
>>> description = pattern.sub(r'<a href="http://crucible.app.com:9090/\1?cs=\2">\1</a>', description)
>>> print(description)
before
<a href="http://crucible.app.com:9090/841398?cs=myrepo">841398</a>: after