正则表达式拆分分隔符

时间:2011-10-26 07:43:03

标签: java regex

我有以下字符串:

;Spe \,\:\; cial;;;

我希望用分号作为分隔符将其拆分,但以“\”开头的分号不应计为分隔符。所以我想得到像

这样的东西
["", "Spe \,\:\; cial", "", "", ""]

更新

Java表示形式如下:

String s = ";Spe \\,\\:\\; cial;;;";

2 个答案:

答案 0 :(得分:4)

使用negative look-behind

(?<!\\\\);

(请注意,此表达式中只有一个\ - 即表达式应为(?<!\); - 但反斜杠字符必须双重转义:一次是为了Java编译器,再次为了正则表达式引擎的好处。)

答案 1 :(得分:0)

您想要提取以下正则表达式捕获的部分:;?([^;]*)\\\\?; 因此,只要找到匹配项,就在字符串中搜索此模式:

Pattern pattern = Pattern.compile(";?([^;]*)\\\\?;");
Matcher matcher = pattern.matcher(yourString);
List<String> tokens = new ArrayList<String>();
while(matcher.find()){
   tokens.add(matcher.group(1));
}

String[] yourArray = tokens.toArray(new String[0]); // if you prefer an array 
                                                    // rather than a list