# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:без|бес|в|во|воз|вос|возо|вз|вс|вы|до|за|из|ис|изо|на|наи|недо|над|надо|не|низ|нис|низо|о|об|обо|обез|обес|от|ото|па|пра|по|под|подо|пере|пре|пред|предо|при|про|раз|рас|разо|с|со|су|через|черес|чрез|а|ана|анти|архи|гипер|гипо|де|дез|дис|ин|интер|инфра|квази|кило|контр|макро|микро|мега|мата|мульти|орто|пан|пара|пост|прото|ре|суб|супер|транс|ультра|зкстра|экс)?[ъь]?(?:[её]б)(?:адь|ак|алей|ан|ян|анин|янин|анк|янк|ар|арь|ариц|арк|ач|ени|ани|еств|ств|есть|ость|ец|к|изм|изн|ик|ник|нин|ин|атин|ист|иц|ниц|их|л|лк|льн|льник|льщик|льщиц|н|ог|г|р|от|ет|тель|итель|ун|чик|щик|чиц|ыш|ал|ел|аст|ат|ев|ов|енн|онн|енск|инск|ив|ит|овит|лив|шн|оват|еват|тельн|уч|юч|яч|чат|чив|а|я|е|и|нича|ну|ова|ева|ствова|ся|сь|о|ск|жды|учи|ючи|то|либо|нибудь|ание|ение|ба|ь|исса|эсса|ива|ествова|изова|ирова|изирова|ства|ка|яка|ича|б|об|ытьб|в|ав|ощав|овлив|елив|члив|овь|o|тв|овств|инств|тельств|ляв|аг|инг|ург|уг|ыг|д|ад|иад|арад|оид|ядь|ое|ые|аж|ёж|ёжь|оз|ки|очки|ушки|нюшки|унюшки|еньки|ошеньки|охоньки|ами|ками|ай|атай|ей|ачей|ий|овий|стви|ни|ани|овани|ени|e|арий|ери|орий|ти|т|ци|аци|изаци|ици|нци|енци|ачий|ичий|a|ой|кой|уй|тяй|чак|авк|овк|ловк|анек|енек|онек|ышек|ежк|евик|овник|еник|ейник|арник|атник|истик|овщик|айк|ейк|инк|онк|унк|ок|онок|чонок|ушок|ерк|урк|вск|евск|овск|еск|ческ|ическ|истичес|лезск|эзск|йск|ейск|ийск|имск|нск|анск|ианск|унск|тельск|етк|отк|ютк|ук|чук|ацк|ецк|чк|ачк|ечк|ичка|очк|шк|ашк|ёшк|ишка|ишко|ушк|ышк|ык|ульк|усеньк|ошеньк|оньк|охоньк|юк|як|няк|ль|ла|ло|аль|овал|ёл|ель|ил|ол|оль|ул|ыль|онизм|им|ом|м|ком|иком|ышком|няком|уном|ишом|ым|нь|уган|иан|овиан|лан|ман|ебн|обн|евн|ивн|овн|ень|ен|ён|мен|смен|яжн|знь|езн|овизн|озн|иозн|бин|овин|лин|елин|нин|жан|чан|овчан|ичан|инчан|тян|итян|чин|щин|овщин|льщин|йн|ейн|нн|анн|ованн|ированн|ённ|овенн|ственн|менн|ионн|ационн|он|арн|орн|сн|снь|отн|ятн|ичн|иничн|очн|ашн|ишн|ышн|альн|идальн|иальн|ональн|уальн|ельн|абельн|ибельн|ительн|ильн|ынь|иян|ко|очко|енько|ошенько|онько|охонько|но|овато|атарь|ер|p|онер|мейстер|up|ор|вор|тор|атор|итор|ур|тур|amyp|итур|ырь|яр|с|ис|анс|есс|ус|ариус|ть|am|иат|дцать|надцать|евт|итет|нит|инит|ант|ент|мент|амент|емент|оть|иот|имость|ность|нность|енность|тость|ут|у|y|ку|еньку|оньку|ому|ану|оту|х|ах|ках|ох|ух|ц|авец|овец|лец|омец|нец|енец|инец|овиц|лиц|овниц|ениц|атниц|униц|ичниц|очниц|ешниц|льниц|тельниц|льц|ч|ич|евич|ович|нич|ыч|ш|аш|иш|айш|ейш|ошь|ош|уш|оныш|ащ|ищ|ище|ища|бищ|овищ|лищ|ущ|еющ|ы|ажды|ою|ую|остью|мя|ая|ее|ше|ший|ши|вши|вш|ёх|до|по|ему|рас)?(?:ь|о|е|а|ам|ами|ас|am|ax|ая|е|её|ей|ем|еми|емя|ex|ею|ёт|ёте|ёх|ёшь|и|ие|ий|им|ими|ит|ите|их|ишь|ию|jу|м|ми|мя|о|ов|ого|ое|оё|ой|ом|ому|ою|cm|у|ум|умя|ут|ух|ую|шь)"
test_str = ("въебать\n"
"выебать\n"
"въебнина")
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html