[英]Java regex to split string with variable spaces and delimiter
给定像这样的单行字符串
a b c d => e f g 1 2
使用双定界符( space
和=>
)的模式
" +( +|\\\\=> *)?"
产生以下9个字段作为Java
中String.split()
的输出:
a, b, c, d, e, f, g, 1, 2
但是,如果输入字符串使用“ 1 M”之类的符号表示数字“ 1000000”,即
abcd => efg 1 m 2
毫无疑问,该模式会产生10个场( m
是额外的一个)。
可以在String.split()
修改模式以将1
和m
可靠地组合为1 m
,而其他所有条件都相同吗?
这将根据=>
或不带m
空格对输入进行分割。
String s = "a b c d => e f g 1 m 2";
String[] parts = s.split("\\s*=>\\s*|\\s+(?!m)");
System.out.println(Arrays.toString(parts));
输出:
[a, b, c, d, e, f, g, 1 m, 2]
要么
String s = "a b c d => e f g 1 m 2";
String[] parts = s.split("\\s*=>\\s*|(?<!\\d)\\s+(?!m)");
System.out.println(Arrays.toString(parts));
在不带数字或不带“ m”的空格上分割:
str.split("((?<!\\d) | (?!m))+(\\=> *)?"
仅供参考,“ +”作为可选组的替代是多余的,因为初始的“ +”将占用所有空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.