返回正则表达式对象内容的单个实例

时间:2011-01-24 23:47:30

标签: python

我正在写一个匹配的函数,我想知道我是否只能返回匹配的第一个匹配项。这是我的代码(它匹配给定行的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

2 个答案:

答案 0 :(得分:0)

我的猜测是你需要在Match Objects上多做一些阅读。

特别是Groups

希望这有帮助。

答案 1 :(得分:0)

又一次更新。
对不起,我觉得这最终成了我的错。当我使用line.replace()时,我没有使用正确的搜索字符串,只使用了re模块的测试,这对于我想要匹配的内容来说过于笼统。

以下是最终修复问题的答案:

 line.replace('<a href="' + test_str + '">', '<a href="' + re_string + '">')