Я ломаю голову над проблемой, но не могу найти правильное решение. Проблема: написать регулярное выражение, которое будет соответствовать всем вхождениям различных символов или слов в тексте. Порядок текста должен быть именно таким:
pl играть игрок
я пробовал
(pl|играть|игрок)
но по какой-то причине он выберет только pl во всех словах. Так кто-нибудь знает, почему так и возможно ли сделать это, используя только регулярное выражение?
Ссылка крегулярное выражение101
Любая помощь будет оценена по достоинству.
решение1
При поиске альтернатив начинайте с самого длинного слова и переходите к самому короткому, если они имеют/начинаются с общих символов. Так как pl
и play
все player
начинаются с , то сопоставляется pl
только (как первая альтернатива). и не рассматриваются.pl
play
player
Ваше регулярное выражение должно быть: (player|play|pl)
.
В этом случае сначала проверяются/сравниваются слова player
, затем с play
тем, если player
слово не найдено, и, наконец, с тем, pl
если два других слова не найдены.
решение2
Вам необходимо указать жадное соответствие, поэтому добавьте .*
в конец вашего регулярного выражения, например:
(pl|play|player).*
При использовании жадных совпадений следует соблюдать осторожность, поскольку в итоге можно сопоставить больше совпадений, чем хотелось бы.