2017-06-20 151 views
1

我想把所有不同类型的括号,例如(, {, and [,在一个给定的字符串中使用正则表达式,但我不知道如何去做。 这里是我当前的代码:在Java正则表达式中查找括号字符串

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

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

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

+0

你可以显示一些示例输出吗? – Sweeper

+0

你不能为此使用'split'。 split被调用的模式是_boundary_,并且实际上将从拆分结果中删除。我会从@ brso05下面回答 – jingx

+0

@jingx其实你可以只需要做一些操作,然后你就可以检查我的答案:) –

回答

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); 
    } 
} 
+0

注意你必须在你的代码中做一些修改1-你可以使用'列表 temp = new ArrayList <>();'''''''''''''''''''''''''''''' } \\(\\)\\ [\\]]“'3-打印您的列表,您可以使用'System.out.println(temp);'修复它,您的解决方案将是完美的:) –

1

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

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

输出

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

解决方案2

如果输入包含其他字符,那么你可以先更换它们,并使用例如previouse解决方案:

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

regex demo

+0

可能因为有可能是其他字符之间?... – brso05

+1

是@ brso05可能,你现在可以检查我的解决方案 –

+0

好吧,从技术上说这是可行的,但我没有看到这样做的任何优势。事实上,现在恕我直言,最好的答案就是下面的答案,它简单地遍历字符串并寻找单个括号字符。它比基于正则表达式的解决方案更高效,而且实际上读起来更容易。 – jingx

1

你可以尝试将字符串转换成字符数组然后遍历该数组,并且如果存在特定的括号,则使用数组列表来附加

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