如何使这个正则表达式工作? (连续分隔符)

时间:2011-03-17 14:57:06

标签: java regex split

我使用以下代码:


String array[] = "aba;b12".split("[4\\,;\\Qab\\E]+");
for(String test : array)
    System.out.println(test);

我期待:

a
b12

但是我得到了:

<blank line>
12

编辑:我清理了代码,抱歉。

整个想法是将代码分为4,分号,ab,逗号,并将连续分隔符视为一个。

编辑:对于所有的困惑感到抱歉,我知道这个问题并不像以前那么清楚。

由于

5 个答案:

答案 0 :(得分:1)

好的,我终于找到了你认为\Q...\E正在做的事情。我认为你想要的是([4\,;]|ab)+(如果你把它写成字符串文字,还有任何必要的转义)。呃,除了我不明白为什么你为了逃避逗号而烦恼。

答案 1 :(得分:0)

我认为\ Qab \ E没有按照你的想法行事,正则表达式会被方括号内的任何字符拆分,所以会在a和b处分开,试试这个:

编辑:

([4\,;]+)

我没有正确地阅读,这会给你

ab
b12

但第一部分代表着。

答案 2 :(得分:0)

这个


String array[] = "aba;b12".split("ab|,|;|4");
for(String test : array)
    System.out.println(test);

输出


<blank line>
a
b12

答案 3 :(得分:0)

我不能将"aba;b12"拆分为

a
b
12

如果您希望使用Regex,则必须定义您要执行的操作并为其定义规则。如果它只是单独解析每个字母和数字,你必须手动或修改原始字符串,以便你可以分割它使用正则表达式。 如果你提供一些关于你希望实现什么的背景信息,你会得到一些新的想法。

答案 4 :(得分:0)

    String array[] = "aba;;b12".split("(\\Qab\\E+|[4;]+)+");
    for(String test : array)
        System.out.println(test);