构建这个正则表达式的问题

我有一个问题建立以下正则表达式:[1,2,3,4]

我找到了解决办法,但我觉得它很难看

String stringIds = "[1,2,3,4]"; stringIds = stringIds.replaceAll("\\[", ""); stringIds = stringIds.replaceAll("\\]", ""); String[] ids = stringIds.split("\\,"); 

有人可以帮助我建立一个正则表达式,我可以在拆分function中使用感谢您的帮助

编辑:我想从这个字符串“[1,2,3,4]”到一个有4个条目的数组。 条目是字符串中的4个数字,所以我需要消除“[”,“]”和“,”。 “,”不是问题。 第一个和最后一个数字包含[或]。 所以我需要使用replaceAll修复。 但我想如果我使用分裂正则表达式“,”,我也可以通过一个正则表达式,消除“[”“]”。 但我无法弄清楚,这个正则表达式应该是什么样子。

这几乎就是你要找的东西:

  String q = "[1,2,3,4]"; String[] x = q.split("\\[|\\]|,"); 

问题是由于前导开括号,它在数组的开头产生了一个额外的元素。 你可能无法用一个正则表达式sansanigans做你想要的。 如果您知道字符串始终以开括号开头,则可以先将其删除。

正则表达式本身意味着“(拆分)任何开放括号,或任何封闭的括号,或任何逗号。”

标点符号通常在正则表达式中具有其他含义。 双重反斜杠…呃,第一个反斜杠告诉Java String解析器下一个反斜杠不是一个特殊字符(例如:\ n是换行符……)所以\\意思是“我想要一个诚实的上帝反斜杠”。 下一个反斜杠告诉regexp引擎下一个字符(例如) 不是特殊的正​​则表达式字符。 这让我大笑。

也许从开始和结束substring [] ,然后分开其余的,

 String stringIds = "[1,2,3,4]"; String[] ids = stringIds.substring(1,stringIds.length()-1).split(","); 

在我看来你正试图制作一个arrays(不知道你从哪里得到’正则表达式’;这意味着不同的东西)。 在这种情况下,您需要:

 String[] ids = {"1","2","3","4"}; 

如果它特别是你想要的整数数组,那么使用:

 int[] ids = {1,2,3,4}; 

您的问题无法通过分隔符进行拆分。 通过匹配整数本身来拆分更安全,更通用:

 static String[] nums(String in) { final Matcher m = Pattern.compile("\\d+").matcher(in); final List l = new ArrayList(); while (m.find()) l.add(m.group()); return l.toArray(new String[l.size()]); } public static void main(String args[]) { System.out.println(Arrays.toString(nums("[1, 2, 3, 4]"))); } 

如果您的代码遵循的第一行:

 String stringIds = "[1,2,3,4]"; 

并且你试图遍历所有数字项,然后下面的代码片段只能工作:

 try { Pattern regex = Pattern.compile("\\b(\\d+)\\b", Pattern.MULTILINE); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { for (int i = 1; i <= regexMatcher.groupCount(); i++) { // matched text: regexMatcher.group(i) // match start: regexMatcher.start(i) // match end: regexMatcher.end(i) } } } catch (PatternSyntaxException ex) { // Syntax error in the regular expression }