繁体   English   中英

Java正则表达式使用可变空格和定界符分割字符串

[英]Java regex to split string with variable spaces and delimiter

给定像这样的单行字符串

a   b c d => e f g   1 2

使用双定界符( space=> )的模式

" +( +|\\\\=> *)?"

产生以下9个字段作为JavaString.split()的输出:

a, b, c, d, e, f, g, 1, 2

但是,如果输入字符串使用“ 1 M”之类的符号表示数字“ 1000000”,即

abcd => efg 1 m 2

毫无疑问,该模式会产生10个场( m是额外的一个)。

可以在String.split()修改模式以将1m可靠地组合为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM