我正在写一个匹配的函数,我想知道我是否只能返回匹配的第一个匹配项。这是我的代码(它匹配给定行的url的所有实例,而不仅仅是第一个)...这是在我尝试选择单个匹配之前:
def file_match(line, url):
allmatches = re.search(r'<a href="(?P<url>.*?)"', line)
if allmatches and allmatches.groupdict()['url'] == url:
return allmatches.groupdict()['url']
else:
return None
有没有人有这个特殊问题的经验? 我被建议通过正则表达式对象使用'.sub'方法,但我真的无法分辨我将用于此方法的参数。我尝试过很多东西,但都会产生错误。
以下是一个此类(失败)尝试的示例:
def file_match(line, url):
allmatches = re.search(r'<a href="(?P<url>.*?)"', line)
if allmatches and allmatches.groupdict()['url'] == url:
return re.sub(r'<a href="(?P<url>.*?)"', allmatches, 1)
else:
return None
我使用.search()方法的问题是什么?
任何建议都将受到赞赏。
谢谢, JML
答案 0 :(得分:0)
答案 1 :(得分:0)
又一次更新。
对不起,我觉得这最终成了我的错。当我使用line.replace()时,我没有使用正确的搜索字符串,只使用了re模块的测试,这对于我想要匹配的内容来说过于笼统。
以下是最终修复问题的答案:
line.replace('<a href="' + test_str + '">', '<a href="' + re_string + '">')