需要此字符串的正则表达式

时间:2009-10-03 06:23:58

标签: regex string

我正在编写一个小程序来进行一些计算。

基本上输入如下:

-91 10 -4 5

数字可以带有负号。它们也被一个空间隔开。 我需要一个正则表达式来过滤每个数字,包括符号(如果有的话)。

谢谢!

亚当

3 个答案:

答案 0 :(得分:4)

PHP中的

$digit=explode(' ', $digitstring);
echo $digit[0]; // return -91

在PHP中你不需要正则表达式。

其他语言中也有类似的库,例如.Net。

string.split(new char[]{' '});

这是ruby中的一个例子:

@m=@digitstring.split(' ')
@my=@m[0];  //-91

答案 1 :(得分:1)

(-?\d+)\s?

您必须匹配n次并从匹配器中获取第一组。

伪代码:

matcher = "-91 10 -4 5".match(/(-\d+)\s?/)
while(matcher.hasMatch()) aNumber = match.group(1);

没有正则表达式会更容易

for(x : "-91 10 -4 5".split()) parseInt(x);

答案 2 :(得分:1)

你可能想要:

(?<=\b)-?\d+(?=\b)

这意味着:

  • 匹配(但不捕获)单词边界(在这种情况下为空格或字符串的开头);
  • 可选择匹配并捕获连字符;
  • 匹配并捕获一个或多个数字;和
  • 匹配但不捕获尾随字边界(在这种情况下是字符串的空格或末尾)。

上面的非捕捉表达式是zero-width assertions,从技术上来说是一个积极的外观和积极的前瞻(分别)。