Мне нужно регулярное выражение, которое соответствует 8-буквенным словам, оканчивающимся на «ion», или 10-буквенным словам, оканчивающимся на «able».
Вот что я придумал, но почему-то http://regex101.com говорит, что нет совпадений, когда я пытаюсь сопоставить строку.
Моя идея заключается в следующем:
([a-z]{4}^\btion\b|[a-z]{6}^\bable\b)
Ссылка на regex101 — Вот
Попробуй это:
\b([a-z]{4}tion|[a-z]{6}able)\b
Ты используешь ^\b
между переменной секции (например, [a-z]{4}
) и постоянный постфикс (например, tion
) и это разрывает матч. ^
означает «начало строки (или строки)» и \b
означает «граница слова». Использование его вместе не имеет большого смысла, так как начало строки всегда является границей слова.
\b
соответствует границе слова. Это должно быть только в начале и конце слова, а не перед суффиксом. Вы можете взять его за скобки группировки, так как все альтернативы должны совпадать на границах слов.
\b([a-z]{4}tion|[a-z]{6}able)\b
Вам не нужно ^
вообще, это соответствует началу строки.