要求:根据前一行中的文本,即“GVH:”替换出现在“url:http://some.web.com/GVH-JBoss.ear”中的文本行[例如:url:ftp://new.web.com/new.ear]。你知道吗
示例:
考虑如下文本行:
GVH:
url: http://some.web.com/GVH-JBoss.ear
sha1: 7b7b797735822d411c288d14510e9e023001d3ae
VID:
url: http://some.web.com/VID.ear
sha1: 2fcac8bdcfadcfc12f0a7dfef0bad01db5f8f8a8
期望值:
GVH:
url: ftp://new.web.com/new.ear
sha1: 7b7b797735822d411c288d14510e9e023001d3ae
VID:
url: http://some.web.com/VID.ear
sha1: 2fcac8bdcfadcfc12f0a7dfef0bad01db5f8f8a8
我试过用python正则表达式[回复sub()方法]实现这一点:
re.sub(r'\s+GVH:[\s]*\s+url:\s\w+.*ear', 'url: ftp://new.web.com/new.ear', line.rstrip(), re.MULTILINE)
其他正则表达式试图匹配此指定模式:
1. \s+GVH:[\s]*\s+url:\s\w+.*ear
2. (\s+GVH:\n)?\s*url:\s+\w+.*ear$
3. (\s+GVH:\n)?\s*url:\s+\w+.*ear$
4. [(?<=GVH:\s).*url:\s\w+.*ear$]
5. (?<=\sGVH:[\s\S])url: \w+.*ear
6. [\s]GVH:[\s\S](?=(\s+url: [\w]\.ear)
7. (^.*GVH:[\s]?$)|(^.*url:\s\w+.*ear$)
有了这些正则表达式,我们只能找到其中一行的文本,但不能同时找到两行。你知道吗
他们都未能捕获和替换这些文本行。你知道吗
在这方面需要帮助。你知道吗
您可以使用
yaml
模块。你知道吗例如:
相关问题 更多 >
编程相关推荐