从下面的字符串中,我NUM = 12122
只CheckFrom = 02453226170
需要
String s="shopNumber = \"shop 1\", NUM = \"12122\", Reference = \"NUM1\", CheckFrom = \"02453226170\""
如何使用正则表达式和 String 类的 replaceall 函数来做到这一点?
使用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
.