gpt4 book ai didi

android - 使用包含括号 '(' 的正则表达式从字符串中提取子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:03 25 4
gpt4 key购买 nike

我试图弄清楚如何从字符串中提取子字符串,但该字符串包含一个括号,然后 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 时会说 unclosed group。如果我尝试逃避斜杠 \( 然后说非法转义字符。

我期望返回的是 2972550

最佳答案

您在获取数字的过程中遗漏了一些字符,未能转义 (, )[,请使用

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);
}

这是一个regex demo和一个 online Java demo .

详情

  • \[ - 一个 [
  • Monitor Status - 文字子串
  • ] - 文字 ]
  • \( - 文字 (
  • / - 一个/
  • monitors# - 文字子串
  • (\d+) - 第 1 组:一个或多个数字。

关于android - 使用包含括号 '(' 的正则表达式从字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com