假设我在网页中搜索锚链接.有效的正则表达式是:
"\<a\s+.*?\>"
Run Code Online (Sandbox Code Playgroud)
但是,让我们添加一个复杂功能.让我们假设我只想要包含特定文本的链接,例如,单词"next".通常情况下,我认为我所要做的就是:
"\<a\s+.*?\>next"
Run Code Online (Sandbox Code Playgroud)
但我现在发现,如果页面中有3个锚标签,而第三个锚标签后面有"下一个",那么正则表达式搜索会找到从第一个锚标签延伸的大字符串,并扩展到第三个锚标签.如果周期 - 星号 - 问号是找到所有字符,直到遇到">下一个",这是有道理的.但这不是我想要的.我想找到所有字符,直到遇到">",然后另一个约束应该是在">"之后应该是"next".
我如何让它工作?
您可以通过禁止>在标记内部匹配来修复正则表达式,即替换.为[^>]:
"\<a\s+[^>]*?\>next"
Run Code Online (Sandbox Code Playgroud)
.*?匹配任意数量的字符.你让它不情愿的事实并没有让它停下来>:它继续匹配过去,直到最后找到它>next.这并不贪心,因为表达式尽可能少地匹配以获得匹配.只是没有更短的比赛可用.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |