如何使用模式匹配获取子字符串

时间:2012-10-15 14:51:21

标签: java regex string pattern-matching

我有

String content= "<a data-hovercard=\"/ajax/hovercard/group.php?id=180552688740185\">
                 <a data-hovercard=\"/ajax/hovercard/group.php?id=21392174\">"

我希望获得"group.php?id=""\""

之间的所有ID

例如:的 180552688740185

这是我的代码:

String content1 = "";
Pattern script1 = Pattern.compile("group.php?id=.*?\"");
Matcher mscript1 = script1.matcher(content);
while (mscript1.find()) {
    content1 += mscript1.group() + "\n";
}

但由于某种原因,它不起作用。

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:2)

为什么您使用.*?来匹配id.*?将匹配每个角色。您只需要检查digits。所以,只需使用\\d即可。

此外,您需要捕获id然后打印它。

// To consider special characters as literals
String str = Pattern.quote("group.php?id=") + "(\\d*)";

Pattern script1 = Pattern.compile(str);
// Your matcher line
while (mscript1.find()) {
    content += mscript1.group(1) + "\n";   // Capture group 1 contains your id
}