для обнаружения чисел, записанных в виде слов

Мне нужен код PHP, чтобы определить, содержит ли строка 4 или более последовательных записанных числа (от 0 до 9), например:

"one four six nine five"

или

"zero eight nine nine seven three six six"
7
задан Alan Moore 3 September 2010 в 02:00
поделиться

4 ответа

Другой вариант:

\b(?:(?:one|two|three|four|five|six|seven|eight|nine|zero)\b\s*?){4}

Это почти то же самое, что и остальные. Единственный интересный бит - это часть \s*? - она ​​будет лениво сопоставлять пробелы между словами, поэтому вы не получите лишних пробелов после последовательности из 4 слов. . \b перед этим гарантирует наличие хотя бы одного пробела (или другого разделителя после последнего слова, поэтому !a b c d! будет соответствовать)

3
ответ дан 7 December 2019 в 01:13
поделиться
if (preg_match("/(?:\b(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine))\b\s*?){4,}/", $variable_to_test_against, $matches)) {
  echo "Match was found <br />";
  echo $matches[0];
}

РЕДАКТИРОВАТЬ:

Добавлены пробелы в регулярном выражении - спасибо Коби.

0
ответ дан 7 December 2019 в 01:13
поделиться

Можно так:

\b(?:(?:zero|one|two|three|four|five|six|seven|eight|nine)(?: +|$)){4}

(Рубулярный)

5
ответ дан 7 December 2019 в 01:13
поделиться
/(?:(?:^|\s)(?:one|two|three|four|five|six|seven|eight|nine|ten)(?=\s|$)){4,}/

Код PHP:

if (preg_match(...put regex here..., $stringToTestAgainst)) {
    // ...
}

Примечание. В регулярное выражение можно легко добавить больше слов (например, «двенадцать»).

2
ответ дан 7 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: