Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android Studio中,正则表达式不适用于字符串前面的特殊字符_Java_Android_Regex - Fatal编程技术网

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:和。