проверьте это регулярное выражение (с помощью Expresso, спасибо eidylon!):
(?:(?:\b\w+)?{1}(?:{2}|{3})?).+?\b
где:
{1} = целое слово минус последние две буквы. например, если слово «счастливый», {1} заменяется на «hap»
{2} = от второй до последней буквы слова («p», если слово «счастливый»)
{3} = вторая, последняя и последняя буква слова (в данном примере «py»)
это найдет "счастливый", "счастливый", "несчастный", "несчастный" ... к сожалению, для этого примера, он также найдет такие слова, как "случилось", "несчастный", "происходит" и т. Д., Это будет работать для я, потому что я обычно собираюсь искать более непонятные слова, где корень не так часто встречается, а слово немного длиннее, например, "усугубить", поэтому оно будет соответствовать "exacerba", "exacerbat" и "усугубить ", что на порядок менее распространено, чем" hap "," happ "и" happy ". Также важно отметить, что в нем не будут найдены слова с обширными корневыми изменениями, такие как «человек» к «людям».
так что, хотя это и не идеальное решение, оно работает для меня :) спасибо, что указали мне правильное направление, eidylon! теперь у меня гораздо лучшее понимание регулярных выражений!