В начале шаблона ищите 0-3 алфавитных символа, затем *
, а также 0-3 *
с, а затем алфавитный символ. Это гарантирует, что совпадение начинается в точке, за которой следует хотя бы один алфавит и хотя бы один *
в течение следующих 4 символов. Затем сопоставьте [a-z*]{2,4}
:
(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}
https://regex101.com/r/90A8rY/1
Это не ясно из вопроса, но если вы хотите сопоставить только отдельные слова, посмотрите назад и посмотрите вперед для пробела (или края строки) в начале и конце шаблона:
(?<= |^)(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}(?= |$)
^^^^^^^^ ^^^^^^^
https://regex101.com/r/90A8rY/3