正则表达式如何惰性匹配每行任意位置的首个百分比,忽略后续匹配项
正则调整方案
调整后的正则如下,直接取第一个捕获组的内容即可得到每行首个百分比:
^.*?(\d+\.\d+%)
规则解释
^锚定到每一行的开头,确保从行首开始检索.*?非贪婪匹配任意字符,会最短路径跳过行首到第一个百分比之间的所有内容,不会向后多匹配(\d+\.\d+%)是百分比匹配规则,放在捕获组中,捕获到的内容就是目标结果。你原有写法里的[%]+?可以简化为%,因为百分比符号只会出现一次,不需要多余的量词约束。
原有写法的问题
你之前的正则没有锚定行首,也没有做匹配范围限制,所以会命中一行内所有符合格式的百分比,自然无法只提取第一个。
匹配结果验证
针对你给出的示例文本,捕获结果如下,完全符合需求:
- 第一行:
10.00% - 第二行:
0.9% - 第三行:
1.58%
内容的提问来源于stack exchange,提问作者RSax
相关产品推荐
相关产品推荐

