繁体   English   中英

Java RegEx:拆分而不丢失令牌

[英]Java RegEx: Split without losing token

我正在尝试编写正则表达式,当有空格后跟一个负号后跟非空格时会拆分一个字符串。

例:

"x -y".split(regex)
returns: String[]{"x","-y"};

目前我正在使用

(?<=\\s)-(?=\\S+)

为我的正则表达式; 但这会返回“x”,“y”并吃掉负号。 有没有办法不吃负号?

谢谢!

您可以在第二组中包含减号

\\s(?=-\\S+)

这为您提供了理想的结果。

您正在捕获用于拆分的减号。 因此它被删除。

两种可能的解决方

a)将它添加到第二个匹配,因为它必须在那里,否则拆分不会返回此结果b)尝试(\\S*) (\\S.*)而是进行匹配。 这将返回两个结果,“x”和“-y”。

如果split函数是如此简单,可以考虑使用字符串split函数。 它比正则表达快得多。

var result = "x -y".split(" -");
if (result.length == 2) result[1] = "-" + result[1];

http://gskinner.com/RegExr/是一个检查正则表达式的好网站。 如果你将你的正则表达式与Howards进行比较,你会看到差异。 如果你拿我的并做一场比赛。

图案:

\s(?=\-\S)

例”

 String:  x -y z -x y z
Matches:   ^    ^

Carets指向匹配

演示:

示例代码

如果要分割的值之间总是有空格,请考虑使用以下内容:

“x -y”.split(“ - ”);

只记得把-放回去(如果需要的话)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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