что будет хорошим регулярным выражением для извлечения чистых чисел из "25 10a 36 10b 30" - PullRequest
0 голосов
/ 05 марта 2009

я нуждался в регулярном выражении, которое вернет мне только 25,36,30 из

25 10a 36 10b 30

, поскольку они являются единственными чистыми числами в последовательности.

Я попробовал это, но у меня это не сработало:

(^|[ ])\d+|($|[ ]) 

Есть предложения?

Ответы [ 7 ]

5 голосов
/ 05 марта 2009

Подать заявку в глобальном масштабе:

(?<=^|\s)\d+(?=\s|$)
2 голосов
/ 05 марта 2009

Вы можете использовать параметр границы слова :

\b(\d+)\b

но некоторые знаки пунктуации будут помечены как границы слов, поэтому это не даст того, что вы хотите.

Похоже, вам придется явно искать пробелы:

/(^|\s+)(\d+)(\s+|$)/

При извлечении числа не забудьте получить вторую группу, поскольку в первой будет только пробел.

0 голосов
/ 05 марта 2009

\d+ - это все, что вам нужно. Если вы используете C #, обратите внимание на разницу между «Match» и «Matches» для объекта Regex. Один находит одно совпадение, другой находит несколько непересекающихся совпадений.

http://msdn.microsoft.com/en-us/library/30wbz966(VS.71).aspx

0 голосов
/ 05 марта 2009

Если вы ищете только целые числа, используйте \b\d+\b.

0 голосов
/ 05 марта 2009

Этот должен сделать работу:

\b\d+\b
0 голосов
/ 05 марта 2009

Вы можете использовать \ b для границы слова.

Я думаю, что-то вроде:

\b\d+\b
0 голосов
/ 05 марта 2009

Заметив ваши множественные вопросы регулярных выражений, я могу предложить вам учебное чтение. Regular-Expressions.info имеет несколько великолепных руководств для знакомства с RegEx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...