Использование Lookahead для поиска последнего символа
Я хочу сопоставить слова, оканчивающиеся на "o", "s", "x", "ch" или "sh", но по какой-то причине он совпадает с любым словом, имеющим любую из этих букв.
Это мое регулярное выражение:
o|s|x|ch|sh(?=$)
Некоторые примеры:
- омар // Не должно совпадать
- персик // должен совпадать
- эксперт // Не должно совпадать
- Картофель // Должен совпадать
1 ответ
Решение
Вы должны сгруппировать чередование, иначе оно будет интерпретировано как:
o OR s OR x OR ch OR sh(?=$) // pseudo-code
Вы можете использовать группу без захвата, чтобы сгруппировать их вместе:
.*(?:o|s|x|ch|sh)(?=$)
И .*
позволяет полное слово, чтобы соответствовать.