Предварительный матч не совпадает

У меня есть строка, и я хочу взять только совпадающее слово, которое содержит только целочисленное значение, а не с плавающей точкой или символом.

Пример :

2.0 Test map
2.0 Your Word 150
2.0 Your 150  Word 

с первого укола ничего не берите, но у второй струны получается 150

Я использую /\b([0-9])\b/i, но не работаю


person testgo    schedule 13.09.2017    source источник
comment
Я предлагаю сопоставлять и пропускать числа с плавающей запятой и сопоставлять только другие фрагменты цифр: preg_match_all('~\d*\.\d+(?:e[-+]?\d+)?(*SKIP)(*F)|\d+~i', $s, $matches), см. демонстрацию.   -  person Wiktor Stribiżew    schedule 13.09.2017
comment
Вы можете использовать поисковые запросы: (?<=\s|^)\d+(?=\s|$)   -  person anubhava    schedule 13.09.2017


Ответы (1)


Вам также нужно игнорировать ., поскольку вам не нужны числа с плавающей запятой: попробуйте следующее выражение

/(?<![\d.])[0-9]+(?![\d.])/
person B. Desai    schedule 13.09.2017
comment
(?<![\d.])[0-9]+(?![\d.]) будет соответствовать 345 в 1.23+e345. Конечно, для OP это может не быть проблемой, просто к вашему сведению. - person Wiktor Stribiżew; 13.09.2017