为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中使用正则表达式替换基于上一文本行中的模式的文本行

在Python中使用正则表达式替换基于上一文本行中的模式的文本行

largeQ 2021-04-02 08:12:06
要求:根据前一行中的文本“ 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 regex [re.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$)使用所有这些正则表达式,仅能找到任一行的文本,而不能找到两者。他们所有人都无法捕获和替换这些文本行。在这方面需要帮助。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信