java - 字符串解析机制获取值

标签 java regex string parsing expression

我遇到以下问题,希望有人能告诉我我是否正在使用最糟糕的机制来实现我想要做的事情:

这是我需要解析的字符串:

(s(j1) | f(j2) | d(f3) | t(f4) | e(f5) = 5) & v(g) = "0"

我需要能够将 j1、j2、f3、f4、f5 和 g 以及括号内的其他任何内容作为单独的元素获取

这就是我正在做的事情,但它没有按照我想要的方式工作......

String parsedString="";
String delimiter = "[()s(f(d(t(n(v(&|]+");
String[] tokens = parseString.split(delimiterString);
List<String> listOfValues = new ArrayList<String>(Arrays.asList(tokens));
for (int i=0;i<listOfValues.size();i++)
{
    System.out.println("Value of "+i+"is "+listOfValues.get(i));
    if(listOfValues.get(i).equals("\r") || listOfValues.get(i).equals("")|| listOfValues.get(i).equals(" "))
    {
         listOfValues.remove(i);
     }
}

我也在尝试删除空格和回车符,但如果有更好的方法来做到这一点(显然我的方法不起作用),请告诉我。

最佳答案

这应该有帮助:

String input = "(s(j1) | f(j2) | d(f3) | t(f4) | e(f5) = 5) & v(g) = \"0\"";
String regex = "\\(([^(]+?)\\)";
Matcher matcher = Pattern.compile(regex).matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

关于java - 字符串解析机制获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15112306/

相关文章:

java - 在 getRuntime().exec 中使用引号

c++ - 查找文件中包含其本身及其反转的单词

python - 简化函数

regex - 如何将反斜杠添加到get_option()

javascript - 正则表达式表示仅重复我提供的字符的单词?

c - c 指针字符串的问题

java - 当我不知道文件流在哪里打开时,有什么方法可以关闭它吗?

java - 我可以在 X3D 中创建带有负对象的 boolean 值吗?

java - 打印每个单词在排序字符串单链表中显示的次数

regex - 如何限制 ExtJS DatePicker 中的两个日期?