я нуждался в регулярном выражении, которое вернет мне только 25,36,30 из
25 10a 36 10b 30
, поскольку они являются единственными чистыми числами в последовательности.
Я попробовал это, но у меня это не сработало:
(^|[ ])\d+|($|[ ])
Есть предложения?
Подать заявку в глобальном масштабе:
(?<=^|\s)\d+(?=\s|$)
Вы можете использовать параметр границы слова :
\b(\d+)\b
но некоторые знаки пунктуации будут помечены как границы слов, поэтому это не даст того, что вы хотите.
Похоже, вам придется явно искать пробелы:
/(^|\s+)(\d+)(\s+|$)/
При извлечении числа не забудьте получить вторую группу, поскольку в первой будет только пробел.
\d+ - это все, что вам нужно. Если вы используете C #, обратите внимание на разницу между «Match» и «Matches» для объекта Regex. Один находит одно совпадение, другой находит несколько непересекающихся совпадений.
\d+
Regex
http://msdn.microsoft.com/en-us/library/30wbz966(VS.71).aspx
Если вы ищете только целые числа, используйте \b\d+\b.
\b\d+\b
Этот должен сделать работу:
Вы можете использовать \ b для границы слова.
Я думаю, что-то вроде:
Заметив ваши множественные вопросы регулярных выражений, я могу предложить вам учебное чтение. Regular-Expressions.info имеет несколько великолепных руководств для знакомства с RegEx.