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

标签 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";
}

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

你能给我一些建议吗?

最佳答案

为什么使用.*?来匹配id.*? 将匹配每个字符。您只需要检查数字。因此,只需使用 \\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
}

关于java - 如何使用模式匹配获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898211/

相关文章:

java - 使用 Samurai 进行线程转储分析

regex - 我在我的 CI/CD 设置中找不到 Gitlab 的测试覆盖解析设置

c++ - 如何迭代 std::string 中的所有正则表达式匹配及其在 c++11 std::regex 中的起始位置?

python - 如何将用户给定的字符串转换成列表

java - 数组的 boolean 方法,编码问题

java - 引用变量的数据类型 (Java)

C - 将 char * 数组索引转换为字符串,并进行比较

Matlab中的字符串startsWith

java - 计算二叉搜索树的深度?

javascript - 带小数位数字的正则表达式