Как мне сопоставить слово в первых 20 словах текста в Regex php? - PullRequest
0 голосов
/ 01 декабря 2018

Я смотрел на другие подобные вопросы, и они не работали в тесте регулярных выражений.

Пожалуйста, опубликуйте формулу, которая работает.Спасибо

1 Ответ

0 голосов
/ 01 декабря 2018

Ваше регулярное выражение почти правильно, но нуждается в небольших изменениях.Вместо этого

 ^(?:\w+\s*){0,20}(food)

вы должны использовать это,

^(\w+\W+){0,19}food

В своем регулярном выражении вы написали {0,20}, что на самом деле уже будет насчитывать 20 слов, и ваша еда станет 21-м словом, котороетогда не должно совпадать, как вы написали в своем сообщении, что соответствует слову food с первыми 20 словами.Итак, если быть точным, вы должны исправить это на {0,19}.

Вторая проблема заключается в том, что вы написали \w+\s* в своем регулярном выражении, поэтому, если ваша строка содержит что-либо, кроме слова илипробел (может быть пунктуацией или точкой или восклицательным знаком и т. д.), тогда это регулярное выражение не будет совпадать.Чтобы покрыть любой другой символ, вы должны безопасно использовать \W символ, который будет соответствовать любому не-словесному символу.

И, как кто-то сказал в комментариях, вы должны удалить ^ из начала регулярного выражения, чтобы оно совпадало,но тогда он может совпадать, но тогда он будет не из первых двадцати слов и вместо этого найдет любой такой шаблон в середине текста, который будет неправильным.Поэтому сохраняйте каретку ^ (он же начальный якорь) для сопоставления только из первых 20 символов.

Демо

Дайте мне знать, если этоэто то, что вы искали.

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