我一直在学习正则表达式,因此我一直在研究Hackerrank问题。我遇到了一个问题,我被要求删除html格式,只保留锚标记的引用(href部分的值)内部的任何内容,以及标记内的文本,然后用逗号分隔。
我想出了以下代码来提取这些信息:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
s.nextLine();
for (int i = 0; i < n; i++) {
String line = s.nextLine();
Pattern p = Pattern.compile("(.*)<a href=\"([^\"]+)\"([^<>]*)>(<\\w+>)*([^<>]+)</a>(</\\w+>)*");
Matcher m = p.matcher(line);
while (m.find()) {
System.out.println(m.group(2).trim() + "," + m.group(5).trim());
}
}
}
此代码在出现<p><a href="folder/page" id="link">text</a></p>
通过和输出folder/page,text
但是如果输入有多个<a>
标签,它只会抓取它的最后一次出现并输出,而不是输出该单个输入的所有可能匹配。为什么会这样?如果您认为我可以通过一些提示自己回答,请不要完全回答我的问题。感谢您提前给出任何答案