重复定界符并提取定界符之间的字符串

时间:2019-12-02 02:07:44

标签: python html substring text-extraction

我对Python和正则表达式还很陌生,并且希望从html文件中提取信息。

假设以下是html文件中给出的一行(由于html不能“看到”空格,因此我们的示例位于同一行)

<td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)> ALSO_EXTRACT_THIS </td>

在我当前的代码中:

with open(myInput, 'r') as inputFile:
    for line in inputFile:
        line = line.strip()

        if line != '':

            m = re.findall('<td.*>(.*?)</td>', line)
            if m:
                #strip() again
                print(m)

这只会打印:

['ALSO_EXTRACT_THIS']

而不是我想要的

['EXTRACT_THIS', 'ALSO_EXTRACT_THIS']

我在做错什么吗?我已经研究过了,看来这是一种使用重复定界符提取多个子字符串的方法。

1 个答案:

答案 0 :(得分:0)

这是因为<td.*>将与它可以匹配的最长字符串<td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)>相匹配。

对于<td>,您也应该使用非贪婪量词:

'<td.*?>(.*?)</td>'