String pattern = "\\{(*.)\\{";
Pattern.compile(pattern).matcher("Some string");
因非法状态异常而崩溃。
当我浏览Pattern类的源代码,方法compile时,它只有一个语句,即throw语句。并返回运行时异常
是指android阻止了Pattern类。如果是的话,还有其他使用Java regex的Pattern类的方法吗?
答案 0 :(得分:0)
当我浏览Pattern类的源代码,方法compile时,它具有 仅一个声明,即throw声明。并返回运行时异常
因为您尚未下载Android API 28的源代码。您应该在SDK Manager
中下载它,然后重新启动IDE,您将看到完整的源代码。
根本原因:您的模式在Java和Android中也不是有效的正则表达式
解决方案1:将正则表达式更改为
String pattern = "\\{(.*)\\{";
解决方案2:如果要在正则表达式中添加“(”或“)”,则必须在此之前使用“ \\”
String pattern = "\\{\\(*.\\)\\{";
奖金:请参阅this链接以了解有关正则表达式的更多信息。
更新1:根据您的示例,我想您想在花括号内获取该值
String title = "Not your billing ZIP code? {Update your address on file.}";
String pattern = ".*\\{(.*)\\}";
Matcher matcher = Pattern.compile(pattern).matcher(title);
if (matcher.matches()) {
Log.d("regex_test", matcher.group(0));
Log.d("regex_test", matcher.group(1));
} else {
Log.d("regex_test", "not match");
}
输出:
08-13 15:26:12.132 6516-6516/com.example.pc.myapplication D/regex_test: Not your billing ZIP code? {Update your address on file.}
08-13 15:26:12.132 6516-6516/com.example.pc.myapplication D/regex_test: Update your address on file.