Нужно регулярное выражение для этой строки - PullRequest
0 голосов
/ 03 октября 2009

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

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

-91 10 -4 5

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

Спасибо!

Адам

Ответы [ 3 ]

4 голосов
/ 03 октября 2009

в PHP:

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

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

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

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

Вот пример в ruby:

@m=@digitstring.split(' ')
@my=@m[0];  //-91
1 голос
/ 03 октября 2009

Вы, вероятно, хотите:

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

Это означает:

  • Сопоставить (но не перехватить) границу слова (в данном случае пробел или начало строки);
  • При желании сопоставить и захватить дефис;
  • Совпадение и захват одной или нескольких цифр; и
  • Совпадение, но не захватывает конечную границу слова (в данном случае это пробел или конец строки).

Вышеуказанные выражения для захвата: утверждения нулевой ширины , технически положительный взгляд позади и положительный взгляд (соответственно).

1 голос
/ 03 октября 2009
(-?\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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...