Java 在Android Studio中,正则表达式不适用于字符串前面的特殊字符
我有这个字符串:Java 在Android Studio中,正则表达式不适用于字符串前面的特殊字符,java,android,regex,Java,Android,Regex,我有这个字符串: {"level": "INFO", "message": "89532154: phone number saved successfully."} 我只想把“信息”这个词提取出来 我试过^(\{.{10})(\w*),(?这实际上是一个: 您应该能够从级别获得这样的信息: JSONObject obj = new JSONObject(yourcurrentjson); String levelOutput = obj.getString("level"); // lev
{"level": "INFO", "message": "89532154: phone number saved successfully."}
我只想把“信息”这个词提取出来
我试过^(\{.{10})(\w*)
,(?这实际上是一个:
您应该能够从级别
获得这样的信息
:
JSONObject obj = new JSONObject(yourcurrentjson);
String levelOutput = obj.getString("level");
// level output should return the INFO
这与regex
:
Map<String, Integer> map = new HashMap<>();
for (String keyValue: json.split(",")) {
String[] data = keyValue.split(":");
map.put(
data[0].replace("\"", """),
Integer.valueOf(data[1].trim());
);
}
对于获取字符串,就像您的情况一样
检查一下:这实际上是一个:
您应该能够从级别
获得这样的信息
:
JSONObject obj = new JSONObject(yourcurrentjson);
String levelOutput = obj.getString("level");
// level output should return the INFO
这与regex
:
Map<String, Integer> map = new HashMap<>();
for (String keyValue: json.split(",")) {
String[] data = keyValue.split(":");
map.put(
data[0].replace("\"", """),
Integer.valueOf(data[1].trim());
);
}
对于获取字符串,就像您的情况一样
检查此项:在第一个正则表达式中,通过将第一个捕获组中的任何字符的前10次匹配来匹配第二个捕获组中的INFO
因为据我所知,Java不允许在lookback中使用可变长度,因此\s*
不起作用。相反,您可以使用类似\\s{0,10}
在这种情况下,最好使用json解析器,但如果必须使用正则表达式,则可以使用:
(?<=\\{\"level\":\\s{0,10}\")\\w+(?=\")
(?在第一个正则表达式中,通过将第一个捕获组中的任何字符的前10次匹配,可以将第二个捕获组中的INFO
匹配
因为据我所知,Java不允许在lookback中使用可变长度,因此\s*
不起作用。相反,您可以使用类似\\s{0,10}
在这种情况下,最好使用json解析器,但如果必须使用正则表达式,则可以使用:
(?<=\\{\"level\":\\s{0,10}\")\\w+(?=\")
(?从字面上看它太多了,以至于我忘了它是JSON。谢谢你的帮助!JSON解析器真的很有帮助,它使代码比正则表达式更可读。是的,我也更喜欢JSON解析器。但是,你也可以使用GSON:而且。从字面上看它太多了,以至于我忘了它是JSO谢谢你的帮助!JSON解析器真的很有帮助,它使代码比正则表达式更可读。是的,我也更喜欢JSON解析器。不过,你也可以使用GSON:和。