Говоря о Regex, я сталкиваюсь с проблемой замены переносов в начальной части составного слова.
Например:
wo-wo-wo-wonder -> wonder
hi-hi-hi-hi -> hi
wo-wo-wo -> wo
f-f-f-fight
Итакдля каждого слова внутри текста я хочу заменить слова, которые перед основным словом (wonder
) имеют частичное или полное повторение основного слова (wo-wo-wo
, но также wonder-wonder-wonder
).В то же время составные слова, такие как bi-linear
или
pre-trained
, НЕ ДОЛЖНЫ заменяться, потому что в этом случае перенос (pre) не является частью основного слова (train).
Я виделэто решение [ Python находит все вхождения дефисных слов и заменяет их в позиции ] и, по-видимому, это может быть хорошим решением.Но моя проблема совершенно иная, потому что я не хочу налагать ограничения на длину переноса, и в то же время я хочу проверить, является ли дефис частью основного слова.
Это Regex IЯ на самом деле использую, но, как объяснено, это не решает мою полную проблему.
re.sub(r'(?<!\S)(\w{1,3})(?:-\1)*-(\w+)(?!\S)', '\\2', s)