使用可选分隔符

时间:2015-11-06 16:44:53

标签: java regex delimiter

〜单独的文本字段〜和^分隔所有字段

输入的字符串(字段可以为空)

~01001~^~0100~^~Butter, salted~^~BUTTER,WITH SALT~^~~^~~^~Y~^~~^0^~~^6.38^4.27^8.79^3.87

我目前的分裂

String [] splited = str.split("\\^",-1);
        for (String s : splited){
            System.out.println (s);
        }

输出

~01001~
~0100~
~Butter, salted~
~BUTTER,WITH SALT~
~~
~~
~Y~
~~
0
~~
6.38
4.27
8.79
3.87

如何更改正则表达式以便~~不包括在内? (空字段很好)

我希望输出

01001
0100
Butter, salted
BUTTER,WITH SALT


Y

0

6.38
4.27
8.79
3.87

空行应为“”

3 个答案:

答案 0 :(得分:1)

使用此正则表达式匹配您想要的数据:

Pattern p = Pattern.compile("~([^~]*)~|([^\\^]+)");

使用Matcher API获取匹配的数据。

Matcher m = p.matcher(input);
while (m.find()) {
   System.out.println(m.groupCount() == 2 ? m.grop(2) : m.grop(1));
}

RegEx Demo

答案 1 :(得分:0)

分裂不适合摆脱那些倾斜。您需要将~(.*?)~替换为\1或使用基本检测(charAt)和操作(subString

答案 2 :(得分:0)

目前还不清楚如何对待〜,但看起来很简单,只需将两个角色都作为一个分裂角色:

        String b[] = str.split("[\\^~]");

基本上忽略了所有〜和^字符。