我想匹配一个字符特定的次数。 例如,我想在如下所示的HTML字符串中匹配作者的姓名:
base>"author's name"</span>
以下正则表达式匹配“ base>”和“ / span>”之间的任何字符,并仅返回作者的姓名:
base>\s*(.*?)(?=\s*<\/span>)
但是,HTML文件包含50个实例,并且上述正则表达式返回所有50个匹配项。我将如何修改它,以便仅返回匹配的前10个实例?
答案 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资源,但可以更轻松地响应不断变化的需求。