我开始使用 java 中的正则表达式,并试图从字符串中提取数字 99999,如下所示:
<result name="response" numFound="99999" start="0">
你能建议我实现这一目标的最有效的正则表达式吗?谢谢!
如果这是一次性情况,您可以使用包中的Pattern
和Matcher
类,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 并相应地读取属性。
用于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