我试图将给定字符串中的所有不同类型的括号(即(, {, and [
)放入使用正则表达式的数组中,但我无法弄清楚如何执行此操作。
这是我目前的代码:
String s = "{[()]}";
String regexStr = "\\( | \\) | \\[ | \\] | \\{ | \\}";
Pattern p = Pattern.compile(regexStr);
String[] splitStr = p.split(s);
当我打印数组时,只有一个元素是原始字符串:"{[()]}"
。我不确定我的regexStr是否正确,我在OR旁边添加了空格,因为当我没有留空时,没有任何东西被添加到数组中。
regexStr在我没有空格的情况下使用的在线Java正则表达式检查器中工作,但它似乎在我的代码中不起作用。
答案 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("");
答案 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);
}
}