Python正则表达式-匹配多次

时间:2018-09-22 13:00:58

标签: python regex python-3.x

我想匹配一个字符特定的次数。 例如,我想在如下所示的HTML字符串中匹配作者的姓名:

base>"author's name"</span>

以下正则表达式匹配“ base>”和“ / span>”之间的任何字符,并仅返回作者的姓名:

base>\s*(.*?)(?=\s*<\/span>)

但是,HTML文件包含50个实例,并且上述正则表达式返回所有50个匹配项。我将如何修改它,以便仅返回匹配的前10个实例?

1 个答案:

答案 0 :(得分:0)

可以创建一个正则表达式来捕获该正则表达式的前十个实例,方法是将其以.*?分隔后进行连接。然后,您可以使用前十个捕获组来提取作者:

base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>).*?base>\s*(.*?)(?=\s*<\/span>)

但是,这不是您通常要执行的操作,因为它使更改搜索的作者数量变得相对困难。查找所有捕获并仅使用前几个捕获可能会占用更多的CPU资源,但可以更轻松地响应不断变化的需求。