我有以下字符串:
;Spe \,\:\; cial;;;
我希望用分号作为分隔符将其拆分,但以“\”开头的分号不应计为分隔符。所以我想得到像
这样的东西["", "Spe \,\:\; cial", "", "", ""]
更新
Java表示形式如下:
String s = ";Spe \\,\\:\\; cial;;;";
答案 0 :(得分:4)
(?<!\\\\);
(请注意,此表达式中只有一个\
- 即表达式应为(?<!\);
- 但反斜杠字符必须双重转义:一次是为了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