我正试图通过此ligne代码从jsoup的维基百科页面获取网址:
Elements linksOnPage = document.select("a[href~=\"/wiki/\"(([A-Za-z])*|_)]");
获取链接看起来像:https://en.wikipedia.org/wiki/United_Stat或https://en.wikipedia.org/wiki/English_people ....等,但它对我不起作用,所以我希望从匹配的标记中获取链接:/ wiki / [A-ZA-Z] * | _ 而不是像这样:https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard
答案 0 :(得分:0)
我对你的任务有几点想法:
看来,您不需要只包含拉丁字母的文章,因此允许的字符列表可以扩展为数字等。
基本上,你现在的正则表达式是“给我'/ wiki /',然后给我任意长度的英文字母下划线或序列”,所以删除'或'条款并包括在允许的字符列表中加下划线。
要避免包含“:”的特殊链接,可以检查regexp匹配是否仅在匹配整个href属性后才停止。为了实现它,你可以在正则表达式的末尾添加'$'。
我玩了一些jsoup和类似的东西从维基百科解析了你想要的东西,我想:
Elements allInfoLinks = doc.select("a[href~=\\/wiki\\/([a-zA-Z0-9_/&?]+)$]");
顺便说一句,在每种情况下你都遇到正则表达式的问题,你可能会发现https://regex101.com/对调试非常有用