【发布时间】:2018-09-22 13:00:58
【问题描述】:
我想匹配一个字符特定的次数。 例如,我想匹配一个 HTML 字符串中的作者姓名,如下所示:
base>"author's name"</span>
以下正则表达式匹配“base>”和“/span>”之间的任何字符,并仅返回作者姓名:
base>\s*(.*?)(?=\s*<\/span>)
但是,HTML 文件包含 50 个这样的实例,并且上面的正则表达式返回所有 50 个匹配项。我将如何修改它以便只返回匹配的前 10 个实例?
【问题讨论】:
-
我认为这是不可能的。只需获取所有这些,只考虑前 10 个。
-
您可以通过在整个表达式之后使用语法 {n} 将匹配项限制为“n”,这样将是“(base>\s*(.*?)(?=\s *)){10}"
-
@AhmedAshrafGamal 不会按顺序匹配字符串 10 次吗?而不是文本中的任何地方?
-
@BartFriederichs 你是对的,我认为是这样,如果不是,那么就像你说的那样,考虑到比赛的前 10 个结果将是正确的选择。
-
你可以在第 10 场比赛中使用
finditer和break。
标签: python regex python-3.x