Wpis z mikrobloga

Potrzebuję pomocy z regexów. Mam przykładowe ciągi w liniach
BUT.DESPERADOS
BUT.OKOCIM
BUT.WAR
BUTELKA WARKA
I regex:

\b(piwo|but|...rozne slowa klucze)[a-z]{0-4}\b
Chciałbym, zeby lapało mi zarówno słowo butelka (stąd dodane [a-z[{0-4} bo mam sporo takich skrótów) but jak i but. (z kropką), ale nie but.war
W chwili obecnej działa mi to na te warunki z wyjątkiem but. Jeśli zmienię na [a-z\.]{0,4} to niestety łapie BUT.WAR jako całość. Próbuję z czymś w rodzaju (\.?|[a-z]{0,4}) ale to nie działa. Jest na to jakiś sposób? Jeśli przykład jest niezrozumiały to w skrócie chodzi o kompilację słów + (patern1 lub patern2) (ale nie oba jednocześnie)

#programowanie
  • 8
Tych but, piw itd będzie dużo więcej i chciałbym uniknąć do każdego dodawania potencjalnej kropki albo możliwości (butelka, butelek, butl - roznie ludzie piszą, syf jest nieziemski bo to od wielu klientów).
@Sonaht To niestety łapie dodatkowo osobno słowo WAR w BUT.WAR
@Volantie Do końca mi to nie działało (łapało też kilka liter po kropce), ale przerobiłem tak:
\b(piwo|but(\.?\b|[a-z]{0,4}\b))
i wygląda, że działa - dzięki :)
@macabrankov fuzzy matching w bibliotece regex dla Pythona pozwala na matchowanie niedoskonałych słów algorytmem damerau-levenshtain. Można określić na ile może się różnić szukany wzór w regexie
@Sonaht: Levenstein to mój kolejny krok :) ale najpierw chcę oczyścić bazę. Tylko jestem trochę ograniczony narzędziami (jakaś farsa, że AzureDW ani PowerQuery nie mają regexa) i muszę kombinować z regexami w VBA, a danych na zew. wysyłać nie mogę. No i wyszło, że to co działało w symuatorze regexów, w VBA nie ma kilku opcji (m.in. conditionali).
Ale opcja na chatgpt jest dobra.