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]”