Regex 如何获得两个字符之间的数字?

Regex 如何获得两个字符之间的数字?,regex,Regex,我有这个字符串: String values="[52,52,73,52],[23,32],[40]"; 怎么才能只拿到40号 我正在尝试这种模式,“\\[^[0-9]*$\\]”,我运气不好 有人能给我提供合适的模式吗?您可以更新您的模式,在字符类之后使用捕获组和量词+,并省略^锚来断言字符串的开头 更改锚定以将字符串$的结尾断言为模式的结尾: \\[([0-9]+)\\]$ ^ ^^ | 例如: String regex = "\\[([0-9]+)\\]$"; St

我有这个字符串:

String values="[52,52,73,52],[23,32],[40]";
怎么才能只拿到40号

我正在尝试这种模式,“\\[^[0-9]*$\\]”,我运气不好


有人能给我提供合适的模式吗?

您可以更新您的模式,在字符类之后使用捕获组和量词
+
,并省略
^
锚来断言字符串的开头

更改锚定以将字符串
$
的结尾断言为模式的结尾:

\\[([0-9]+)\\]$
   ^     ^^   
|

例如:

String regex = "\\[([0-9]+)\\]$";
String string = "[52,52,73,52],[23,32],[40]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
if(matcher.find()) {
    System.out.println(matcher.group(1)); // 40
}

无需使用
^

这里正确的正则表达式是
\\[([0-9]+)\\]$

如果您确定
[]
中的单个数字,这个简单的正则表达式就可以了


\\[(\d+\\]

如果需要最后一个
[
和最后一个
]之间的内容,为什么不直接使用
字符串。子字符串

String values = "[52,52,73,52],[23,32],[40]";       
String wanted = values.substring(values.lastIndexOf('[')+1, values.lastIndexOf(']'));

鉴于您似乎正在使用Java,我建议您在这里利用
String#split

String values = "[52,52,73,52],[23,32],[40]";
String[] parts = values.split("(?<=\\]),(?=\\[)");
String[][] contents = new String[parts.length][];

for (int i=0; i < parts.length; ++i) {
    contents[i] = parts[i].replaceAll("[\\[\\]]", "").split(",");
}

// now access any element at any position, e.g.
String forty = contents[2][0];
System.out.println(forty);
String values=“[52,52,73,52]、[23,32]、[40]”;

String[]parts=values.split(“(?不,我的字符串可能是这样的:”[522,52,73,52],[40],[2311,32],[40]”