我正在尝试从一个包含括号的字符串中提取子字符串,但是Java会提示未被正确封闭,如果我尝试转义它,则会报错并提示无效的转义字符。
我有以下字符串:
[Monitor Status](/monitors#2972550?)] · [[Edit Monitor](/monitors#2972550/edit)] · [[Related Logs](/logs?query=)]
%%%
我正在尝试提取 /monitors# 后面的数字。这个数字在两个位置上都出现,而且总是相同的,所以我只想提取第一个数字。
以下是我目前的代码:
Pattern pattern = Pattern.compile("[Monitor Status]/monitors#(\\d+)");
Matcher matcher = pattern.matcher(monitorDetails);
if (matcher.find())
{
String monitor_id = matcher.group(1);
monitorDetailsContainer.setVisibility(View.VISIBLE);
}
以上内容中,我在]和/monitors之间没有(
,但是当我在Android Studio中这样做时,它会显示未关闭的组
。如果我尝试转义斜杠 \(
,它会显示非法转义字符。
我期望得到的结果是2972550
。
"\[监控状态\]\\(/monitors#(\\d+)"
。 - Wiktor Stribiżew