拆分我有以下字符串:正则表达式的分隔符
;Spe \,\:\; cial;;;
,我想它分号作为分隔符,但是分号由“\”不应该算作分隔符分割。所以,我想获得像
["", "Spe \,\:\; cial", "", "", ""]
更新:
Java表示看起来像:
String s = ";Spe \\,\\:\\; cial;;;";
拆分我有以下字符串:正则表达式的分隔符
;Spe \,\:\; cial;;;
,我想它分号作为分隔符,但是分号由“\”不应该算作分隔符分割。所以,我想获得像
["", "Spe \,\:\; cial", "", "", ""]
更新:
Java表示看起来像:
String s = ";Spe \\,\\:\\; cial;;;";
(?<!\\\\);
(请注意,实际上只有有这个表达式中的单个\
- 即表达式应该是(?<!\);
- 但反斜杠字符必须双重转义:一次为了Java编译器的利益,并且为了正则表达式引擎的好处)
您想提取由以下正则表达式捕获的部分: ;?([^;]*)\\\\?;
所以在你的字符串,只要找到一个匹配搜索这种模式:
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
使用反斜杠作为转义字符,你要如何处理“\\;”? (即双反斜线分号) – searlea
对不起。 \\;应该被视为分隔符 - 这是(逃逸)反斜杠加分号。 – lstipakov