2009-10-03 36 views
0

我在寫一個小程序來做一些計算。需要這個字符串的正則表達式

基本上輸入爲執行以下操作:

-91 10 -4 5 

中的數字可以具有負號或沒有。他們也被一個空間隔開。 我需要一個正則表達式來過濾每個數字,包括符號(如果有的話)。

謝謝!

亞當

+0

你正在使用什麼語言? – Graviton 2009-10-03 06:25:00

+0

看看http://www.txt2re.com/它應該可以解決很多這類問題。 – RCIX 2009-10-03 18:23:25

回答

4
在PHP

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

你不需要爲這個正則表達式,在PHP。

其他語言也有類似的庫,如.Net。

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

下面是一個例子,紅寶石:

@[email protected](' ') 
@[email protected][0]; //-91 
+0

所有他的其他問題都是關於ruby的...所以我猜他想要ruby – jrhicks 2009-10-03 06:31:29

+0

你們真棒xD。是的,我的確在用Ruby編寫,而且分割功能工作得非常好!謝謝! – b1gtuna 2009-10-03 12:49:32

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); 
1

你可能想:

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

這意味着:

  • 匹配(但不捕獲)字邊界(在這種情況下空格或字符串的開始);
  • (可選)匹配並捕獲連字符;
  • 匹配並捕獲一個或多個數字;和
  • 匹配但不捕獲尾隨字邊界(在這種情況下是空格或字符串的結尾)。

上面的非捕獲表達式是zero-width assertions,從技術上說,它們分別是積極的lookbehead和積極的lookahead(分別)。

相關問題