阅读 Java 中括号内的内容?

Reading contents inside brackets in Java?

我正在尝试从 Java 中的文件中读取一些信息,文件内容的格式如下:

InitialState [+A(B),+C(D)]
GoalState [-A(B),+C(D),-E(F)]

我试图遍历文件并只获取括号内的内容,所以我创建的数组应该如下所示:

initial = ['+A(B)', '+C(D)']
goal = ['-A(B)', '+C(D)', '-E(F)']

我应该使用正则表达式来执行此操作吗?到目前为止,我有

if (line.charAt(0) == 'I') {
  String[] initialStateString = (line.subString(line.subString(13, line.length() - 1)).split(","));
  for (String s: initialStateString) {
    initialState.add(s);
  }
}

if (line.charAt(0) == 'G') {
  String[] goalStateString = (line.subString(line.subString(11, line.length() - 1)).split(","));
    for (String s: goalStateString) {
      goalState.add(s)''
    }
}

我相信这基本上是在括号之后开始子字符串的索引,但我想使用只包含括号内容的东西,因为我相信这会更健壮。谢谢。

试试这个代码:

public static void main(String[] args) {
    String s = "InitialState [+A(B),+C(D)]";
    String s1 ="GoalState [-A(B),+C(D),-E(F)]";

    Pattern p = Pattern.compile("([+-]\w\(\w\))");

    Matcher m = p.matcher(s);
    while(m.find()){
        System.out.print(m.group(1)+"  ");
    }

    System.out.println();

    m = p.matcher(s1);
    while(m.find()){
        System.out.print(m.group(1)+"  ");
    }
}

输出:

+A(B)  +C(D)  
-A(B)  +C(D)  -E(F)

正则表达式的解释:

[+-] : Match "+" or "-" character.
\w  : Match any word character.
\( : Match "(".
\) : Match ")"