我正在使用Java Regex读取类型
的字符串"{\n 'Step 1.supply.vendor1.quantity':\"80"\,\n
'Step 2.supply.vendor2.quantity':\"120"\,\n
'Step 3.supply.vendor3.quantity':\"480"\,\n
'Step 4.supply.vendor4.quantity':\"60"\,\n}"
我必须检测
类型的字符串'Step 2.supply.vendor2.quantity':\"120"\,\n.
我正在尝试使用正则表达式的模式和匹配器但是我无法找到像
这样的行的正确正则表达式 <Beginning of Line><whitespace><whitespace><'Step><whitespace><Number><.><Any number & any type of characters><,\n><EOL>.
<Beginning of Line>
和<EOL>
我用于澄清目的。
我尝试了几种模式
String regex = "(\\n\\s{2})'Step\\s\\d.*,\n";
String regex = "\\s\\s'Step\\s\\d.*,\n";
我总是得到 IllegalStateException :找不到匹配项。
我无法通过很好的例子找到适合阅读Java Regex的材料。任何帮助都会非常棒。感谢。
答案 0 :(得分:0)
正如其他人在评论中所说,你应该使用JSON Parser。
但是如果你想看看它如何与正则表达式一起工作,那么你可以这样做:
Step 1.supply.vendor1.quantity':"80"
\\d*
(\\d
匹配任何数字)\\.
替换点(需要转义的点)以下是生成的正则表达式:"Step (\\d*)\\.supply\\.vendor(\\d*)\\.quantity':\"(\\d*)\""
现在,使用Regex
和Matcher
:
String input = "{\n 'Step 1.supply.vendor1.quantity':\"80\"\\,\n";
Pattern pattern = Pattern.compile("Step (\\d*)\\.supply\\.vendor(\\d*)\\.quantity':\"(\\d*)\"");
Matcher matcher = pattern.matcher(input);
while(matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
}
输出:
1 //(corresponds to "Step (\\d*)")
1 //(corresponds to "vendor(\\d*)")
80 //(corresponds to "quantity':\"(\\d*)")