2009-10-03 4 views
0

Я пишу небольшую программу для выполнения некоторых вычислений.Нужно регулярное выражение для этой строки

В основном вход следующее:

-91 10 -4 5 

Цифры могут иметь отрицательный знак или нет. Они также разделены пробелом. Мне нужно регулярное выражение для фильтрации каждой цифры, включая знак, если таковой имеется.

Спасибо!

Адам

+0

На каком языке вы используете? – Graviton

+0

Взгляните на http://www.txt2re.com/, он должен помочь с таким большим количеством проблем. – RCIX

ответ

4

в PHP:

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

вам не нужно регулярное выражение для этого в PHP.

Существует также подобная библиотека на другом языке, например .Net.

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

Вот пример рубин:

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

все остальные его вопросы касаются рубинов ... так что я предполагаю, что он хочет рубин – jrhicks

+0

вы, ребята, потрясающие xD. Да, я действительно пишу в Ruby, и функция split отлично работает! Благодаря! – b1gtuna

1
(-?\d+)\s? 

Вы должны соответствовать п раз и получить первую группу из вашей согласовани.

Псевдо код:

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, технически позитивный lookbehind и положительный lookahead (соответственно).

Смежные вопросы