提取方括号外的字符串

时间:2017-03-04 16:03:08

标签: java bnf

如果我有像这样的BNF代码

[A] ::= [A]B | C | [D]
[D] ::= C[D] | C

如何提取不在方括号内的字母。我试过这个

for(int i=0;i<lineNumber;i++)
    {
       String Data[]=data[i].split("::=");
       Nonter.add(Data[0]);
       ter.add(Data[1]);
       NterSay++;

    }

   String[] splitted = ter.get(0).split("\\[|\\]|\\|");
   for (String split: splitted) {      
System.out.println(split);

}

但它会打印所有字母。

1 个答案:

答案 0 :(得分:0)

试试这个:

    String[] data = new String[]{"[A] ::= [A]B | C | [D]", "[D] ::= C[D] | C"};
    List<String> nonter = new ArrayList<>();
    List<String> ter = new ArrayList<>();

    for (String aData : data) {
        String Data[] = aData.split("::=");
        nonter.add(Data[0]);
        ter.add(Data[1]);
    }

    String replaced = ter.get(0).replaceAll("\\[\\w]|\\s|\\|", "");

    for (char ch : replaced.toCharArray()) {
        System.out.println(ch);
    }