解析单词|

时间:2018-05-24 13:36:02

标签: java regex parsing grammar

我有一个字符串#JSGF V1.0;grammar numbers;public <accion> = (one| two| three); 我想要数字:一,二和三。

我这样做String answer = res.substring(res.indexOf("(")+1,res.indexOf(")"));并获得one| two| three,但我在这方面遇到了麻烦。

想法?

3 个答案:

答案 0 :(得分:2)

您可以使用

将数字作为数组
String numbers[] = answer.split("\\s*\\|\\s*");

\\s*\\|\\s*:0个或更多个空格,然后是|个符号和0个或更多个空格

答案 1 :(得分:0)

String res = "(one| two| three);";
String answer = res.substring(res.indexOf("(")+1,res.indexOf(")"));
for(String str : answer.split("\\s*\\|\\s*")) {
    System.out.println(str);
}

答案 2 :(得分:0)

answer拆分为非单词字符:

public static void main(String[] args) {
    String res = "JSGF V1.0;grammar numbers;public <accion> = (one| two| three);";
    String answer = res.substring(res.indexOf("(") + 1, res.indexOf(")"));
    String[] numbers = answer.split("[^\\w]+"); // split on non-word character
    for (String number : numbers) {
        System.out.println(number);
    }
}

输出:

one
two
three