我正在寻找每个URL,它在html文档中被链接为“eye”。我正在使用正则表达式模式,因为简单包含在这一点上没有解决方案。所以我得到了这样的模式
模式:: href=\"(https?://)?[a-zA-z0-9?/&=\"+-_\\.# ]*>[Ee]ye
它的工作......很好...或多或少...因为我得到的链接比“眼睛”或“眼睛”更多。我会得到链接为“eyebrights”或“eyewears”的网址,但这不是我想要的。
有什么方法可以说“当我想要的东西超过我的时候,让我这个并忽略它”吗?
答案 0 :(得分:2)
应该尝试avoid using regex to parse XML/HTML。请改用jsoup之类的XML / HTML解析器。使用此库,我们的代码可能如下所示:
Elements links = doc.select("a[href]:matches(^[eE]ye\\b)");
//Elements extends ArrayList<Element> so you can easily iterate over it
的更多信息
答案 1 :(得分:1)
在\b
之后添加eye
:
href=\"(https?://)?[a-zA-z0-9?/&=\"+-_\\.# ]*>[Ee]ye\\b
\b
:在字边界处断言位置。