在我工作的系统中,有一些我想更改但无法更改的遗留代码。此代码将值存储在映射中,该映射类似于以下字符串:
userId: "929290"; name: "Donnie Darko"; obj : {field1: "field"; field2: "field2"} phone: "666-6666";
请注意,对象映射后面没有分号,但其他所有键/值对都有分号。有没有办法在Java中使用正则表达式并获得该 map 的第一层,这样我就可以:
userId: "929290"
obj : {field1: "field"; field2: "field2"}
我只想要第一层,我不想单独解析 field1 和 field2 。
最佳答案
不确定这里的用例,但这里有正则表达式可以帮助您找到它
Pattern userIdPattern = Pattern.compile("^userId:\\s*\"(\\d+)\";.*$"); // will be the userId number
Pattern objPattern = Pattern.compile(".*(obj\\s*:\\s*\{[^\}]+\}).*"); //will be the JSON object inside
Matcher userIdMatcher = userIdPattern.matcher("userId: \"929290\"; name: \"Donnie Darko\"; obj : {field1: \"field\"; field2: \"field2\"} phone: \"666-6666\";");
if(userIdMatcher.find()){
System.out.println("userId : " + .group(1));
}
Matcher objPatternMatcher = objPattern.matcher("userId: \"929290\"; name: \"Donnie Darko\"; obj : {field1: \"field\"; field2: \"field2\"} phone: \"666-6666\";");
if(objPatternMatcher.find()){
System.out.println(objPatternMatcher.group(1));
}
关于java - 如何在 Java 中使用正则表达式拆分 map 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550099/