Java解析 - 分隔符也可以是令牌的一部分
问题描述:
我有一个字符串需要解析。Java解析 - 分隔符也可以是令牌的一部分
M|N| | |"DANGER| AWESOME"|N|N| | | |
分隔符是管道符号(|)。但是管道可以是令牌的一部分。在这种情况下,它用双引号括起来。是否有我可以使用的现有库/函数,可以指定分隔符或开/关定界符(|“和”|)。 StringTokenizer不起作用,因为它会在DANGER |中计数管道真棒分隔符。我觉得必须有一个解决方案比单个字符检查字符串/创建一个自定义分析器更加单调乏味。
答
怎么样?
String regex = "\\|(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
测试:
public static void main(String[] args) throws Exception {
String x = "M|N| | |\"DANGER| AWESOME\"|N|N| | | |";
String regex = "\\|(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
String[] y = x.split(regex);
for(String s : y) {
System.out.println(s);
}
System.out.println("************* DONE ***********");
}
输出:
M
N
"DANGER| AWESOME"
N
N
************* DONE ***********
谢谢!你能否用文字解释(或指向一个破坏网站)正则表达式模式?我的正则表达式一直很可怕。 – headlikearock 2014-10-06 20:07:09
我知道这个的唯一原因是因为我询问(使用逗号代替'|'作为分隔符)。 [这里是链接](http://stackoverflow.com/questions/20762375/need-a-breakdown-of-the-following-regular-expression) – gtgaxiola 2014-10-07 12:38:52