java - 使用正则表达式提取子字符串不起作用

标签 java regex string text-extraction

我有一个像这样的字符串:

String source = "https://1116.netrk.net/conv1?prid=478&orderid=[6aa3482b-519b-4127-abee-debcd6e39e96]"

我想提取[ ]内的orderid。我写了这个方法:

public String extractOrderId(String source)
{
    Pattern p = Pattern.compile("[(.*?)]");
    Matcher m = p.matcher(source);
    if (m.find())
        return m.group(1);
    else
        return "";
}

但我总是遇到异常

java.lang.IndexOutOfBoundsException: No group 1

知道出了什么问题吗?谢谢

最佳答案

您需要转义括号:

Pattern p = Pattern.compile("\\[(.*?)\\]");

关于java - 使用正则表达式提取子字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30933638/

相关文章:

java - 如何显示星号的数量到最接近的千位?

java - Travis CI Spring Boot 错误(Gradle 错误)

javascript - 如何在JavaScript中匹配所有4字节UTF-8字符?

javascript - 在 JS 中将字符串的第一行与其余行分开的最佳方法是什么?

java - 删除 Java 中的空格和特殊字符

java - 编译警告: uses unchecked or unsafe operations

java - 什么时候使用不可实例化的类而不是枚举?

python - 如何使用 python 在乌尔都语文本中应用正则表达式

ruby - 正则表达式,如何在 ruby​​ 中查找文件?

string - 如何在 bash 中的两个函数之间传递包含空格的字母数字变量?