1

我开始使用 java 中的正则表达式,并试图从字符串中提取数字 99999,如下所示:

<result name="response" numFound="99999" start="0">

你能建议我实现这一目标的最有效的正则表达式吗?谢谢!

4

2 回答 2

2

如果这是一次性情况,您可以使用包中的PatternMatcher类,java.util.regex如下所示并提取值:

Pattern pattern = Pattern.compile("numFound=\"([0-9]+)\"");
Matcher matcher = pattern.matcher("<result name=\"response\" numFound=\"99999\" start=\"0\">");

if (matcher.find())
{
    System.out.println(matcher.group(1));
}

否则,强烈建议使用适当的 HTML ParserJericho来解析 HTML 并相应地读取属性。

于 2012-12-07T02:36:54.410 回答
1

用于replaceAll()仅在一行中提取您想要的部分。

String number = input.replaceAll(".*numFound=\"(\\d+).*", "$1");

下面是一些测试代码:

public static void main(String[] args) {
    String input = "<result name=\"response\" numFound=\"99999\" start=\"0\">";
    String number = input.replaceAll(".*numFound=\"(\\d+).*", "$1");
    System.out.println(number);
}

输出:

99999
于 2012-12-07T02:43:17.000 回答