-2

从下面的字符串中,我NUM = 12122CheckFrom = 02453226170需要

String s="shopNumber = \"shop 1\", NUM = \"12122\", Reference = \"NUM1\", CheckFrom = \"02453226170\""

如何使用正则表达式和 String 类的 replaceall 函数来做到这一点?

4

1 回答 1

2

使用Matcher.find将使这项任务更容易提取名称/值对。本质上,您正在寻找模式word = "number"

Matcher m = Pattern.compile("(\\w+) = \"(\\d+)\"").matcher(s);
StringBuilder builder = new StringBuilder();
while (m.find()) {
   builder.append(m.group(1));
   builder.append("=");
   builder.append(m.group(2));
   builder.append(" ");
}

m.group(1)与第一个捕获的组有关,(即来自单词的匹配\w+

生成器包含:

NUM=12122 CheckFrom=02453226170

更新: 根据您在评论中的问题,您可以改用:

Pattern.compile("(NUM = \"\\d+\").*( CheckFrom = \"\\d+\")")

并将 2 组附加在一起以获得您的String.

于 2012-12-30T15:47:59.523 回答