java - 在 java 中使用正则表达式的更简洁的解决方案

标签 java regex

我正在寻找解析字符串并返回特定人的适合数字。例如,我可以输入 Paul,我的方法应该返回 34

目前,我正在通过使用 Stringsubstring 方法来完成此操作(我的字符串将始终采用相同的格式):

String s = "{name : John, id : '0', fit : '34' }, {name : Paul, id : '0', fit : '34' },{name : Will, id : '0', fit : '24' } ";
String mainGrouping = s.substring(s.indexOf("Paul"));
System.out.println("Main Grouping: "+ mainGrouping);
String subGrouping = mainGrouping.substring(0, mainGrouping.indexOf('}'));
System.out.println("Sub grouping: " + subGrouping);
String fitGrouping= subGrouping.substring(subGrouping.indexOf("fit"));
String finalAnswer = fitGrouping.replaceAll("[^0-9]", "");

System.out.println("final substring: " + finalAnswer);

我相信有一个更简单、更简洁的解决方案,只使用一个正则表达式。但是,我对这个话题基本上不熟悉。我的假设正确吗?如果可以,您能否解释一下您的正则表达式解决方案?

最佳答案

\{name : John, [^\}]*?fit : '(\d+)'.*?\}

如果应用于您的示例字符串,此正则表达式模式将匹配第一组中的 fit 值。

以防万一您想使用此方法解析 JSON 字符串:它不会那样工作。首先,您不能依赖 JSON 中属性的顺序。

如果您真的想解析 JSON,请使用其他人提到的库。 如果您的示例字符串是合法的,并且您只需要为练习执行此操作,则正则表达式模式(或稍作修改的版本)应该足够了。

关于java - 在 java 中使用正则表达式的更简洁的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491239/

相关文章:

java - 包含 LIKE 转换为条件的 JPQL 查询

java - 获取字符串中指定月份的最后一天

java - 使用 Jackson 序列化空值

java - 使用 PDFBox 合并 Pdf 文件

java - Logback 引用在使用 Spring Boot 的 IntelliJ 中为红色

regex - Hadoop Hive与Python正则表达式等效

regex - 正则表达式,用于从逗号分隔列表中删除方括号中的后缀

javascript - 使用 JavaScript 匹配精确的字符串

regex - Traceroute 输出的正确正则表达式

Python 重新 : Storing multiple matches in variables