在Java Regex String中查找括号

时间:2017-06-20 17:32:50

标签: java arrays regex split

我试图将给定字符串中的所有不同类型的括号(即(, {, and [)放入使用正则表达式的数组中,但我无法弄清楚如何执行此操作。 这是我目前的代码:

String s = "{[()]}";
String regexStr = "\\( | \\) | \\[ | \\] | \\{ | \\}";
Pattern p = Pattern.compile(regexStr);
String[] splitStr = p.split(s);

当我打印数组时,只有一个元素是原始字符串:"{[()]}"。我不确定我的regexStr是否正确,我在OR旁边添加了空格,因为当我没有留空时,没有任何东西被添加到数组中。

regexStr在我没有空格的情况下使用的在线Java正则表达式检查器中工作,但它似乎在我的代码中不起作用。

3 个答案:

答案 0 :(得分:1)

您可以这样做:

public static void main(String[] args) throws FileNotFoundException {
    ArrayList<String> temp = new ArrayList<String>();
    String s = "{[()]}";
    String regexStr = "[\\{|\\}|\\(|\\)|\\[|\\]]";
    Pattern p = Pattern.compile(regexStr);
    Matcher m = p.matcher(s);
    while(m.find())
    {
        temp.add(m.group());
    }
    //If you want to add results to an array...
    String[] results = new String[temp.size()];
    for(int i = 0; i < temp.size(); i++)
    {
        results[i] = temp.get(i);
    }
    for(String a : results)
    {
        System.out.println(a);
    }
}

答案 1 :(得分:1)

为什么你不只是使用"{[()]}".split("")例如:

String[] spl = "{[()]}".split("");
System.out.println(Arrays.toString(spl));

<强>输出

[{, [, (, ), ], }]

解决方案2

如果您的输入包含其他字符,那么您可以先替换它们并使用上一个解决方案,例如:

String s = "{[(hello)java]world}";
String[] spl = s.replaceAll("[^\\{\\}\\(\\)\\[\\]]", "").split("");

regex demo

答案 2 :(得分:1)

您可以尝试将字符串转换为char数组,然后遍历该数组,如果存在特定括号,请使用arraylist追加

string="Hello)"
char[] a= string.toCharArray();
ArrayList brackets= new ArrayList()<>
for(char i : a)
{
if(i==')' || any other bracket)
{
brackets.add(i);
}
}