使用可选的分隔符拆分正则表达式
split regex with optional delimiters
~分隔文本字段~和 ^ 分隔所有字段
正在输入的字符串(字段可以为空)
~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
空行应为“”
拆分不适合删除波浪号。您需要将 ~(.*?)~
替换为 </code> 或使用基本检测 (<code>charAt
) 和操作 (subString
)
使用这个正则表达式来匹配你想要的数据:
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));
}
尚不清楚如何处理 ~,但将两个字符作为拆分字符似乎很简单:
String b[] = str.split("[\^~]");
这基本上忽略了所有 ~ 和 ^ 字符。
~分隔文本字段~和 ^ 分隔所有字段
正在输入的字符串(字段可以为空)
~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
空行应为“”
拆分不适合删除波浪号。您需要将 ~(.*?)~
替换为 </code> 或使用基本检测 (<code>charAt
) 和操作 (subString
)
使用这个正则表达式来匹配你想要的数据:
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));
}
尚不清楚如何处理 ~,但将两个字符作为拆分字符似乎很简单:
String b[] = str.split("[\^~]");
这基本上忽略了所有 ~ 和 ^ 字符。