3

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

例子:

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

目前我正在使用

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

对于我的正则表达式;但这会返回 "x","y" 并吃掉负号。有什么办法不吃负号?

谢谢!

4

4 回答 4

3

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

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

这会给你想要的结果。

于 2011-03-19T18:45:53.397 回答
2

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

两种可能的解决方案:

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

如果拆分功能如此简单,请考虑使用字符串拆分功能。它比正则表达式快得多。

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

http://gskinner.com/RegExr/是一个检查正则表达式的好网站。如果您将您的正则表达式与 Howards 进行比较,您会发现不同之处。如果你也拿我的来做一场比赛。

于 2011-03-19T18:37:55.460 回答
2

图案:

\s(?=\-\S)

例子”

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

插入符号指向匹配项

演示:

示例代码

于 2011-03-19T18:51:29.597 回答
0

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

"x -y".split("-");

只需记住将-背面放入(如果需要)。

于 2011-03-19T18:38:47.577 回答