У меня эти строки. Я хочу, чтобы регулярное выражение соответствовало им и возвращало true, когда я передаю их функции preg_match.
do you want to eat katak at my hometown? do you want to eat teloq at my hometown? do you want to eat tempeyek at my hometown? do you want to eat karipap at my hometown?
Как создать шаблон в регулярном выражении, который будет соответствовать указанному выше шаблону? Как это:
do you want to eat * at my hometown?
Asterik (*) означает любое слово. Вот шаблон регулярного выражения, который у меня есть до сих пор:
$text = "do you want to eat meatball at my hometown?"; $pattern = "/do you want to eat ([a-zA-Z0-9]) at my hometown?/i"; if (preg_match($pattern, $text)) { echo "A match was found."; } else { echo "A match was not found."; }
Формат ([a-zA-Z0-9])
не соответствует слову. Как совместить строку с словом?
Использовать квантификатор:
$pattern = "/do you want to eat ([a-z0-9]*) at my hometown\?/i"; // here __^
и избежать ?
==> \?
$text = "do you want to eat meatball at my hometown?"; $pattern = "/(\w+)(?=\sat)/"; if (preg_match($pattern, $text))
(\w+)
соответствует одному или нескольким символам слов.
(?=\sat)
является положительным взглядом, который соответствует одному пробелу \s
и буквам at
.
Живая демо-версия Regex