java - 如何在 Java 中使用正则表达式拆分 map 字符串

标签 java regex

在我工作的系统中,有一些我想更改但无法更改的遗留代码。此代码将值存储在映射中,该映射类似于以下字符串:

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/

相关文章:

java - 如何在 Android 中将 pdf 附加到发送 Intent (发送到电子邮件、保管箱等)

java - 注销后用户也正在执行操作,我必须编写什么代码来防止注销用户?

regex - Google 分析的自定义过滤器 : "Mozilla Compatible Agent/iPhone"

javascript - 如何使用 JavaScript 在字符串中查找数字?

regex - 我想修改这个正则表达式以包含撇号

java - 无法删除 Spring Hateoas 中的资源

java - 将 Date 对象转换为日历对象

c# - 在 C# 中使用带有正则表达式的 Directory.GetFiles?

java - 为什么这个转换会出错呢?

regex - AWK Regex 查找特定模式