Skip to content

Instantly share code, notes, and snippets.

@imDaniX
Last active December 9, 2025 12:41
Show Gist options
  • Select an option

  • Save imDaniX/8449f40655fcc1b92ae8d756cbca1264 to your computer and use it in GitHub Desktop.

Select an option

Save imDaniX/8449f40655fcc1b92ae8d756cbca1264 to your computer and use it in GitHub Desktop.
Мат фильтр | Регулярка антимат

Регулярное выражение для нахождения русского мата в тексте. Использовать следует только для первичной модерации, ибо обходится нажатием в одну клавишу. Если вам требуется полноценный фильтра мата, советую прибегнуть к программному пути создания такового, найти третье API, или просто остановиться на ручной модерации.

Выражение писалось в первую очередь с оглядкой на регулярки Java - для других языков может потребоваться адаптация.

Основа регулярного выражения

\b(
((у|[нз]а|(хитро|не)?вз?[ыьъ]|с[ьъ]|(и|ра)[зс]ъ?|(о[тб]|п[оа]д)[ьъ]?|(.\B)+?[оаеи-])-?)?(
  [её](б(?!о[рй]|рач)|п[уа](ц|тс))|
  и[пб][ае][тцд][ьъ]
).*?|

((н[иеа]|(ра|и)[зс]|[зд]?[ао](т|дн[оа])?|с(м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху([яйиеёю]|л+и(?!ган)).*?|

бл([эя]|еа?)([дт][ьъ]?)?|

\S*?(
  п(
    [иеё]зд|
    ид[аое]?р|
    ед(р(?!о)|[аое]р|ик)|
    охую
  )|
  бля([дбц]|тс)|
  [ое]ху[яйиеё]|
  хуйн
).*?|

(о[тб]?|про|на|вы)?м(
  анд([ауеыи](л(и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(ов|[ауи])?|е[нт]ь|ища)|
  уд([яаиое].+?|е?н([ьюия]|ей))|
  [ао]л[ао]ф[ьъ]([яиюе]|[еёо]й)
)|

елд[ауые].*?|
ля[тд]ь|
([нз]а|по)х
)\b

Пояснение

Для удобства чтения маты разделены строками и пробелами. Некоторые маты обрабатываются повторно по-разному для отловки вариаций. Если ваш обработчик регулярных выражений не поддерживает подобное раздельное написание, просто соедините всё в одну непрерывную строку; если ваш текстовый редактор может заменять по регулярке, то достаточно будет заменить [\n\s] на ничто.

Граница матерных слов определяется с помощью конструкции \b(...)\b. Для правильной работы также требуются флаги работы с юникодом u и игнорирования регистра i. Но, например, в JavaScript якорь \b с русским языком попросту не работает даже с флагом юникода - придется извертываться.

Дополнительно

Далее, рекомендую добавить ?: к каждой группе, чтобы движок не готовил результаты с ними - на regex101 скорость обработки на Java увеличивается в 2-3 раза; сделать это можно в редакторе текста заменой по регулярке \((?!\?) на (?:.

Раньше я занимался вариантом выражения с транскриптом, но его ведение тратит слишком много времени, а обходится оно всё равно очень тривиально. Эту вариацию регулярки для Java можно найти в истории правок этого gist'а, либо напрямую здесь - для других языков можете поискать обсуждения в комментариях.

Готовые выражения

Ниже можно увидеть готовые выражения, которые я готовлю и обновляю с каждым изменением. Для всех применена оптимизация с ?:. Если вы не хотите этого - просто замените ?: на ничто.

  • Java. Установлен флаг x, который игнорирует пробельные символы в выражении, что позволяет его оставить многострочным. Также доступен однострочный вариант.
  • JavaScript. Флаги iu нужно проставить самостоятельно, например /регулярное выражение/iu. Начальный и конечный якори \b заменены на (?<![а-яё]) и (?![а-яё]) соответственно; выражение .\B заменено на \S(?=[а-яё]).
  • Python. Применены те же меры, что в варианте для JavaScript. Установлен флаг x, который игнорирует пробельные символы в выражении, что позволяет его оставить многострочным, как в варианте для Java. Также доступен однострочный вариант.
(?iu)\b(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:.\B)+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)\b
(?iux)\b(?:
(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:.\B)+?[оаеи-])-?)?(?:
[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|
и[пб][ае][тцд][ьъ]
).*?|
(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|
бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|
\S*?(?:
п(?:
[иеё]зд|
ид[аое]?р|
ед(?:р(?!о)|[аое]р|ик)|
охую
)|
бля(?:[дбц]|тс)|
[ое]ху[яйиеё]|
хуйн
).*?|
(?:о[тб]?|про|на|вы)?м(?:
анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|
уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|
[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й)
)|
елд[ауые].*?|
ля[тд]ь|
(?:[нз]а|по)х
)\b
(?<![а-яё])(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:\S(?=[а-яё]))+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)(?![а-яё])
(?iu)(?<![а-яё])(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:\S(?=[а-яё]))+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)(?![а-яё])
(?iux)(?<![а-яё])(?:
(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:\S(?=[а-яё]))+?[оаеи-])-?)?(?:
[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|
и[пб][ае][тцд][ьъ]
).*?|
(?:(?:н[иеа]|(?:ра|и)[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч|в[ъы]?|пр[еи])-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|
бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|
\S*?(?:
п(?:
[иеё]зд|
ид[аое]?р|
ед(?:р(?!о)|[аое]р|ик)|
охую
)|
бля(?:[дбц]|тс)|
[ое]ху[яйиеё]|
хуйн
).*?|
(?:о[тб]?|про|на|вы)?м(?:
анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|
уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|
[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й)
)|
елд[ауые].*?|
ля[тд]ь|
(?:[нз]а|по)х
)(?![а-яё])
@imDaniX
Copy link
Author

imDaniX commented Jan 18, 2022

https://disk.yandex.ru/i/6BPhVjuURt4YPA
Вот тут список матных слов, кучу из них не банит, на заметку)

Большинство слов просто грубые, но не мат. Есть некоторые, которые стоит пресечь, но если действительно требуется так много слов из файла, я бы посоветовал искать или делать какой-нибудь умный фильтр программно - создание подобных регулярок занимает много времени на одно слово и не поможет даже с элементарными обхо_дами.
В любом случае, спасибо - займусь правкой на этой или следующей неделе.

@StasTikh
Copy link

Welcome for JS .... check in https://regex101.com/ (?<=^|[^а-я])(([уyu]|[нзnz3][аa]|(хитро|не)?[вvwb][зz3]?[ыьъi]|[сsc][ьъ']|(и|[рpr][аa4])[зсzs]ъ?|([оo0][тбtb6]|[пp][оo0][дd9])[ьъ']?|(.\B)+?[оаеиeo])?-?([еёe][бb6](?!о[рй])|и[пб][ае][тц]).*?|([нn][иеаaie]|([дпdp]|[вv][еe3][рpr][тt])[оo0]|[рpr][аa][зсzc3]|[з3z]?[аa]|с(ме)?|[оo0]([тt]|дно)?|апч)?-?[хxh][уuy]([яйиеёюuie]|ли(?!ган)).*?|([вvw][зы3z]|(три|два|четыре)жды|(н|[сc][уuy][кk])[аa])?-?[бb6][лl]([яy](?!(х|ш[кн]|мб)[ауеыио]).*?|[еэe][дтdt][ь']?)|([рp][аa][сзc3z]|[знzn][аa]|[соsc]|[вv][ыi]?|[пp]([еe][рpr][еe]|[рrp][оиioеe]|[оo0][дd])|и[зс]ъ?|[аоao][тt])?[пpn][иеёieu][зz3][дd9].*?|([зz3][аa])?[пp][иеieu][дd][аоеaoe]?[рrp](ну.*?|[оаoa][мm]|([аa][сcs])?([иiu]([лl][иiu])?[нщктлtlsn]ь?)?|([оo](ч[еиei])?|[аa][сcs])?[кk]([оo]й)?|[юu][гg])[ауеыauyei]?|[мm][аa][нnh][дd]([ауеыayueiи]([лl]([иi][сзc3щ])?[ауеыauyei])?|[оo][йi]|[аоao][вvwb][оo](ш|sh)[ь']?([e]?[кk][ауеayue])?|юк(ов|[ауи])?)|[мm][уuy][дd6]([яyаиоaiuo0].*?|[еe]?[нhn]([ьюия'uiya]|ей))|мля([тд]ь)?|лять|([нз]а|по)х|м[ао]л[ао]фь([яию]|[её]й))(?=($|[^а-я]))

Подскажите плиз, пытался добавить еще слов в регулярку, но тогда она ломается. Условно говоря, хотел добавить гдон, шлха и тп, но тогда регулярка плюется даже на безобидное "нахожусь". Как более правильно добавлять слова?
Спасибо

@officialdakari
Copy link

На (?<=(^|[^а-я]))(([уyu]|[нзnz3][аa]|(хитро|не)?[вvwb][зz3]?[ыьъi]|[сsc][ьъ']|(и|[рpr][аa4])[зсzs]ъ?|([оo0][тбtb6]|[пp][оo0][дd9])[ьъ']?|(.\B)+?[оаеиeo])?-?([еёe][бb6](?!о[рй])|и[пб][ае][тц]).*?|([нn][иеаaie]|([дпdp]|[вv][еe3][рpr][тt])[оo0]|[рpr][аa][зсzc3]|[з3z]?[аa]|с(ме)?|[оo0]([тt]|дно)?|апч)?-?[хxh][уuy]([яйиеёюuie]|ли(?!ган)).*?|([вvw][зы3z]|(три|два|четыре)жды|(н|[сc][уuy][кk])[аa])?-?[бb6][лl]([яy](?!(х|ш[кн]|мб)[ауеыио]).*?|[еэe][дтdt][ь']?)|([рp][аa][сзc3z]|[знzn][аa]|[соsc]|[вv][ыi]?|[пp]([еe][рpr][еe]|[рrp][оиioеe]|[оo0][дd])|и[зс]ъ?|[аоao][тt])?[пpn][иеёieu][зz3][дd9].*?|([зz3][аa])?[пp][иеieu][дd][аоеaoe]?[рrp](ну.*?|[оаoa][мm]|([аa][сcs])?([иiu]([лl][иiu])?[нщктлtlsn]ь?)?|([оo](ч[еиei])?|[аa][сcs])?[кk]([оo]й)?|[юu][гg])[ауеыauyei]?|[мm][аa][нnh][дd]([ауеыayueiи]([лl]([иi][сзc3щ])?[ауеыauyei])?|[оo][йi]|[аоao][вvwb][оo](ш|sh)[ь']?([e]?[кk][ауеayue])?|юк(ов|[ауи])?)|[мm][уuy][дd6]([яyаиоaiuo0].*?|[еe]?[нhn]([ьюия'uiya]|ей))|мля([тд]ь)?|лять|([нз]а|по)х|м[ао]л[ао]фь([яию]|[её]й))(?=($|[^а-я])) для JS
пикает "eb" в Zebra

@imDaniX
Copy link
Author

imDaniX commented Dec 10, 2022

пикает "eb" в Zebra

Подредактируй [^а-я] в начале и конце регулярки на [^а-яa-z], должно сработать. В оригинальной регулярке \b должен был работать как граница слова, но в JS оно не хочет работать с юникодом.

@officialdakari
Copy link

officialdakari commented Dec 11, 2022 via email

@mraliscoder
Copy link

"Нахуй" игнорирует :(

@imDaniX
Copy link
Author

imDaniX commented Dec 18, 2022

"Нахуй" игнорирует :(

Если речь про версию под JS, убедись, что присутствуют флаги юникода и игнорирования регистра. На Java триггерится нормально.

@LEv145
Copy link

LEv145 commented Dec 22, 2022

изображение
У меня странно работает regex, тк (.*|(ас)?(ну.*?|и(ли)?[нщктл]ь?)?) может, как (.*|)

@imDaniX
Copy link
Author

imDaniX commented Dec 22, 2022

У меня странно работает regex, тк (.*|(ас)?(ну.*?|и(ли)?[нщктл]ь?)?) может, как (.*|)

\b в начале и конце не просто так стоят - отвечают за детект границы слова.

@AlexanderMatveev
Copy link

Не могу заставить работать на https://regex101.com/ ни один вариант. Да и вообще грустно, неужели нет популярных решений не на регулярках

@imDaniX
Copy link
Author

imDaniX commented Apr 12, 2023

@AlexanderMatveev

Не могу заставить работать на https://regex101.com/ ни один вариант

Повторюсь - делалось под Java в первую очередь. Там regex101 появилась опция под Java 8, и всё вполне работает. И повторю другой момент - требуется использовать регулярку из regex-0.txt или regex-1.txt. Хотя можно сделать как у @LEv145 - добавить x во флаги, и тогда оно будет регулярку читать построчно (не помню, почему сам так изначально не сделал, но скорее всего просто не знал на тот момент).
В ближайшее время наверно обновлю гист - надо чуть больше пояснений добавить, да варианты для других ЯП.

Да и вообще грустно, неужели нет популярных решений не на регулярках

Я не находил.. но если честно, и не искал. Я начинал один проект, но потом понял, что в моем случае игра не стоит свеч. На мой взгляд, всё это в любом случае обойдется на раз-два, дай человеку волю только. То, что уже есть сейчас, и так покроет большую часть использований мата. Для всего остального есть ручная модерация.
Ну, и наверно, можно упомянуть вариант использования нейросетей. Не таких гигантов, вроде GPT, а небольших, более традиционных, обученных под конкретную задачу.

@hazartilirot
Copy link

Не могу заставить работать на https://regex101.com/ ни один вариант. Да и вообще грустно, неужели нет популярных решений не на регулярках

У меня вопрос, а зачем вообще Вам нагружать систему проверяя любой комментарий? Какой в этом смысл? Это бесполезная трата ресурсов, абсолютно лишнее. Не хочу обидеть автора - он молодец)

Просто, любой пользователь который хочет написать матом, сделает замену символов внутри слова и всё равно мат пролетит в паблик. Для подобного рода модерации существует администрация на сайта, форумах или чатах. Даже тот же Телеграм не предоставляет таких "понтов". Репортуй админу на сообщение и жди когда отреагируют.

Реджекс очень хорош, сам люблю, но не в данном случае. ИМХО)

@dhawkmoon
Copy link

Не могу заставить работать на https://regex101.com/ ни один вариант. Да и вообще грустно, неужели нет популярных решений не на регулярках

Попробуй так:

(?<=(^|[^а-я]))(([уyu]|[нзnz3][аa]|(хитро|не)?[вvwb][зz3]?[ыьъi]|[сsc][ьъ']|(и|[рpr][аa4])[зсzs]ъ?|([оo0][тбtb6]|[пp][оo0][дd9])[ьъ']?|(.\B)+?[оаеиeo])?-?([еёe][бb6](?!о[рй])|и[пб][ае][тц]).*?|([нn][иеаaie]|([дпdp]|[вv][еe3][рpr][тt])[оo0]|[рpr][аa][зсzc3]|[з3z]?[аa]|с(ме)?|[оo0]([тt]|дно)?|апч)?-?[хxh][уuy]([яйиеёюuie]|ли(?!ган)).*?|([вvw][зы3z]|(три|два|четыре)жды|(н|[сc][уuy][кk])[аa])?-?[бb6][лl]([яy](?!(х|ш[кн]|мб)[ауеыио]).*?|[еэe][дтdt][ь']?)|([рp][аa][сзc3z]|[знzn][аa]|[соsc]|[вv][ыi]?|[пp]([еe][рpr][еe]|[рrp][оиioеe]|[оo0][дd])|и[зс]ъ?|[аоao][тt])?[пpn][иеёieu][зz3][дd9].*?|([зz3][аa])?[пp][иеieu][дd][аоеaoe]?[рrp](ну.*?|[оаoa][мm]|([аa][сcs])?([иiu]([лl][иiu])?[нщктлtlsn]ь?)?|([оo](ч[еиei])?|[аa][сcs])?[кk]([оo]й)?|[юu][гg])[ауеыauyei]?|[мm][аa][нnh][дd]([ауеыayueiи]([лl]([иi][сзc3щ])?[ауеыauyei])?|[оo][йi]|[аоao][вvwb][оo](ш|sh)[ь']?([e]?[кk][ауеayue])?|юк(ов|[ауи])?)|[мm][уuy][дd6]([яyаиоaiuo0].*?|[еe]?[нhn]([ьюия'uiya]|ей))|мля([тд]ь)?|лять|([нз]а|по)х|м[ао]л[ао]фь([яию]|[её]й))($|[^а-я]),

флаги поставь ui

@imDaniX
Copy link
Author

imDaniX commented Aug 9, 2023

Обновил гист - дополнил документацию, расширил, а местами и упростил регулярку, добавил "официальный" вариант под JS (хотя он всё ещё требует правок).
Варианты с транскриптом пока в долговом ящике. Наверно, однажды сделаю какой-нибудь скрипт, чтобы можно было самостоятельно расширить регулярку в вариант с транскриптом.
Файлы теперь будут называться Swears Язык.regex - тип файла добавил для подсветки синтаксиса здесь. Буду придерживаться такого формата, чтобы можно было автоматически подтягивать регулярки прямо с гиста в будущем.

Copy link

ghost commented Aug 23, 2023

Запустил на Python 3.11

re.compile(r"(?<=^|[^а-яё])(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:\S(?=[а-яё]))+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|ра[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч)-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик))|бля(?:[дбц]|тс)|[ое]ху[яйиеёю]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)(?=$|[^а-яё])")
# Ошибка re.error: look-behind requires fixed-width pattern

Обидно, т.к на regex101 хорошо работает :/

Полная ошибка
Traceback (most recent call last):
  File "C:\Users\user\Desktop\regex_test.py", line 4, in <module>
    re.compile(r"(?<=^|[^а-яё])(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:\S(?=[а-яё]))+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|ра[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч)-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик))|бля(?:[дбц]|тс)|[ое]ху[яйиеёю]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)(?=$|[^а-яё])")
  File "C:\Users\user\Local\Programs\Lib\re\__init__.py", line 227, in compile
    return _compile(pattern, flags)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\Programs\Python\Python311\Lib\re\__init__.py", line 294, in _compile
    p = _compiler.compile(pattern, flags)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Programs\Python\Lib\re\_compiler.py", line 747, in compile
    code = _code(p, flags)
           ^^^^^^^^^^^^^^^
  File "C:\Users\user\AppData\Local\Programs\Python311\Lib\re\_compiler.py", line 580, in _code
    _compile(code, p.data, flags)
  File "C:\Users\user\AppData\Local\Programs\Python311\Lib\re\_compiler.py", line 153, in _compile
    raise error("look-behind requires fixed-width pattern")
re.error: look-behind requires fixed-width pattern

@imDaniX
Copy link
Author

imDaniX commented Aug 24, 2023

@MeexReay Обновил файлик под JS - теперь работает и на Питоне. Не забудь проставить флаги flags = re.I | re.U.

@yet-another-user-name
Copy link

Javascript-версия триггерится на слово "плохую" (Java-версию не тестировал)

@imDaniX
Copy link
Author

imDaniX commented Dec 25, 2023

Javascript-версия триггерится на слово "плохую" (Java-версию не тестировал)

Вижу, и правда. Переделал.

@notikj
Copy link

notikj commented Jun 30, 2024

регекс реагирует на слово "хлееб" "хлеееб" и т.д
это можно пофиксить?

@imDaniX
Copy link
Author

imDaniX commented Jun 30, 2024

регекс реагирует на слово "хлееб" "хлеееб" и т.д
это можно пофиксить?

Как заплатка - можно перед .\B (либо \S(?=[а-яё]) в версии для JS и Python) во второй строке регуляки добавить (?!хл):
(?!хл).\B (либо (?!хл)\S(?=[а-яё])).

Но не уверен, стоит ли такое добавлять в "официальную" регулярку, ибо очень специфичный случай вне правил русского.

@notikj
Copy link

notikj commented Jul 2, 2024

регекс реагирует на слово "хлееб" "хлеееб" и т.д
это можно пофиксить?

Как заплатка - можно перед .\B (либо \S(?=[а-яё]) в версии для JS и Python) во второй строке регуляки добавить (?!хл): (?!хл).\B (либо (?!хл)\S(?=[а-яё])).

Но не уверен, стоит ли такое добавлять в "официальную" регулярку, ибо очень специфичный случай вне правил русского.

Не совсем понимаю как это сделать) Сделайте это сами, пожалуйста.
Мне нужно для Java-condensed.regex

@imDaniX
Copy link
Author

imDaniX commented Jul 3, 2024

Не совсем понимаю как это сделать) Сделайте это сами, пожалуйста.
Мне нужно для Java-condensed.regex

(?iu)\b(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:(?!хл).\B)+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|ра[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч)-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)\b

@Undertaker-81
Copy link

Не совсем понимаю как это сделать) Сделайте это сами, пожалуйста.
Мне нужно для Java-condensed.regex

(?iu)\b(?:(?:(?:у|[нз]а|(?:хитро|не)?вз?[ыьъ]|с[ьъ]|(?:и|ра)[зс]ъ?|(?:о[тб]|п[оа]д)[ьъ]?|(?:(?!хл).\B)+?[оаеи-])-?)?(?:[её](?:б(?!о[рй]|рач)|п[уа](?:ц|тс))|и[пб][ае][тцд][ьъ]).*?|(?:(?:н[иеа]|ра[зс]|[зд]?[ао](?:т|дн[оа])?|с(?:м[еи])?|а[пб]ч)-?)?ху(?:[яйиеёю]|л+и(?!ган)).*?|бл(?:[эя]|еа?)(?:[дт][ьъ]?)?|\S*?(?:п(?:[иеё]зд|ид[аое]?р|ед(?:р(?!о)|[аое]р|ик)|охую)|бля(?:[дбц]|тс)|[ое]ху[яйиеё]|хуйн).*?|(?:о[тб]?|про|на|вы)?м(?:анд(?:[ауеыи](?:л(?:и[сзщ])?[ауеиы])?|ой|[ао]в.*?|юк(?:ов|[ауи])?|е[нт]ь|ища)|уд(?:[яаиое].+?|е?н(?:[ьюия]|ей))|[ао]л[ао]ф[ьъ](?:[яиюе]|[еёо]й))|елд[ауые].*?|ля[тд]ь|(?:[нз]а|по)х)\b

гандон(гондон) пропускает

@imDaniX
Copy link
Author

imDaniX commented Aug 27, 2024

гандон(гондон) пропускает

Вульгарщина, но не мат - лишь кривой вариант "condom". Если добавлять все подобные, то список знатно увеличится.
Если очень нужно, то вроде достаточно что-нибудь вроде г[ао]ндон.*?

@drayvs
Copy link

drayvs commented Dec 9, 2025

а вот такую старенькую регулярку видели? https://github.com/purpleraven/antimat

private String[] words = new String[]{
            //ass(es)?
            "a[\\W_]*s[\\W_]*s(?:[\\W_]*e[\\W_]*s)?",
            //fuck(ing)?
            "f[\\W_]*u[\\W_]*c[\\W_]*k(?:[\\W_]*i[\\W_]*n[\\W_]*g)?",
            //ж(ыд(у|ов)?|оп(а(х)?|у|ой))
            "ж[\\W_]*(?:[ыиiu][\\W_]*[дd](?:[\\W_]*[уыаyiau]|[\\W_]*[оo0][\\W_]*[вbv])?|[оo0][\\W_]*[пnp][\\W_]*(?:[аa](?:[\\W_]*[хxh])?|[уеыeyiu]|[оo0][\\W_]*[йj]))",
            //дер(ь)?мо(м)?
            "[дd][\\W_]*[еe][\\W_]*[рpr][\\W_]*(?:[ьb][\\W_]*)?[мm][\\W_]*[оуеаeoya0u](?:[\\W_]*[мm])?",
            //чм(о|ыре)
            "[чc][\\W_]*[мm][\\W_]*(?:[оo0]|[ыi][\\W_]*[рpr][\\W_]*[еиьяeibu])",
            //су((ч)?ка(н(ой|у)?)?|ч((ь)?(е|ей)|ары))
            "[сsc][\\W_]*[уuy][\\W_]*(?:(?:[чc][\\W_]*)?[кk][\\W_]*[ауиiyau](?:[\\W_]*[нhn](?:[\\W_]*[оo0][\\W_]*[йj]|[\\W_]*[уаыyiau])?)?|[чc][\\W_]*(?:(?:[ьb][\\W_]*)?(?:[еёяиeiu]|[еиeiu][\\W_]*[йj])|[аa][\\W_]*[рpr][\\W_]*[ыауеeyiau]))",
            //г(а(ндан(ы)?|вно((м|ед(ы|ом(и)?)?))?)|н(ид(ы|ой)|ус(а|ом(и)?)?))
            "[гrg][\\W_]*(?:[аоoa0][\\W_]*(?:[нhn][\\W_]*[дd][\\W_]*[аоoa0][\\W_]*[нhn](?:[\\W_]*[ыуyiu])?|[вbv][\\W_]*[нhn][\\W_]*[оаoa0](?:[\\W_]*(?:[мm]|[еe][\\W_]*[дd](?:[\\W_]*[ыуаеeyiau]|[\\W_]*[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?)?))?)|[нhn][\\W_]*(?:[иiu][\\W_]*[дd][\\W_]*(?:[ыуеаeyiau]|[оo0][\\W_]*[йj])|[уyu][сsc](?:[\\W_]*[аыуyiau]|[\\W_]*[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?)?))",
            //(не)?((за|от|по|п(ере|ро|издо)|на|из|до|вы|у|раз|зло|тро|у))?(вы)?(ъ)?(еб((о)?(н(н)?я?)?(ва)?(((ишься|т((ь)?ся|ь|есь|е|о|ину)|(щ(ий|ая|ие|его)|ют)(ся)?|ем|к(и)?|ал(ся)?|л(ан|о(м)?|(и)?сь|и|ась)|рь|ся|но|ч(их|есть(ю)?)|(тельск|ст|лив|ч)?(ая|ой|ых|ым(и)?|ую|ие|ому|ий|ев|им(и)?)|ч))?)|ы((ва|н(н)?)(((ишься|т(ься|ь|есь|е|ину)|(щ(ий|ая|ие|его)|ют)(ся)?|ем|л((и)?сь|и|ась)|(ст|лив|ч)?(ая|ой|ых|ым(и)?|ую|ие|ому|ий|ев|им(и)?))))|рь))|яб(о)?((н(н)?я?)?(((ишься|т(ься|ь|есь|е|ину)|(щ(ий|ая|ие|его)|ют)(ся)?|ем|к(и)?|ал(ся)?|л(ан|о(м)?|(и)?сь|и)|рь|ся|но|ч(их|есть(ю)?)|(тельск|ст|лив|ч)?(ая|ой|ых|ым(и)?|ую|ие|ому|ий|ев|им(и)?)|ч))|(н(н)?я?)))|яб(е)?(н(н)?(я)?)?т)
            "(?:[нhn][\\W_]*[еe][\\W_]*)?(?:(?:[з3z][\\W_]*[аa]|[оo0][тt]|[пnp][\\W_]*[оo0]|[пnp][\\W_]*(?:[еe][\\W_]*[рpr][\\W_]*[еe]|[рpr][\\W_]*[оеиeiou0]|[иiu][\\W_]*[з3z][\\W_]*[дd][\\W_]*[оo0])|[нhn][\\W_]*[аa]|[иiu][\\W_]*[з3z]|[дd][\\W_]*[оo0]|[вbv][\\W_]*[ыi]|[уyu]|[рpr][\\W_]*[аa][\\W_]*[з3z]|[з3z][\\W_]*[лl][\\W_]*[оo0]|[тt][\\W_]*[рpr][\\W_]*[оo0]|[уyu])[\\W_]*)?(?:[вbv][\\W_]*[ыi][\\W_]*)?(?:[ъьb][\\W_]*)?(?:[еёe][\\W_]*[бb6](?:(?:[\\W_]*[оеёаиуeioyau0])?(?:[\\W_]*[нhn](?:[\\W_]*[нhn])?[\\W_]*[яуаиьiybau]?)?(?:[\\W_]*[вbv][\\W_]*[аa])?(?:(?:[\\W_]*(?:[иеeiu]ш[\\W_]*[ьb][\\W_]*[сsc][\\W_]*я|[тt][\\W_]*(?:(?:[ьb][\\W_]*)?[сsc][\\W_]*я|[ьb]|[еe][\\W_]*[сsc][\\W_]*[ьb]|[еe]|[оo0]|[иiu][\\W_]*[нhn][\\W_]*[уыеаeyiau])|(?:щ[\\W_]*(?:[иiu][\\W_]*[йj]|[аa][\\W_]*я|[иеeiu][\\W_]*[еe]|[еe][\\W_]*[гrg][\\W_]*[оo0])|ю[\\W_]*[тt])(?:[\\W_]*[сsc][\\W_]*я)?|[еe][\\W_]*[мтmt]|[кk](?:[\\W_]*[иаiau])?|[аa][\\W_]*[лl](?:[\\W_]*[сsc][\\W_]*я)?|[лl][\\W_]*(?:[аa][\\W_]*[нhn]|[оаoa0](?:[\\W_]*[мm])?|(?:[иiu][\\W_]*)?[сsc][\\W_]*[ьяb]|[иiu]|[аa][\\W_]*[сsc][\\W_]*[ьb])|[рpr][\\W_]*[ьb]|[сsc][\\W_]*[яьb]|[нhn][\\W_]*[оo0]|[чc][\\W_]*(?:[иiu][\\W_]*[хxh]|[еe][\\W_]*[сsc][\\W_]*[тt][\\W_]*[ьиibu](?:[\\W_]*ю)?)|(?:[тt][\\W_]*[еe][\\W_]*[лl][\\W_]*[ьb][\\W_]*[сsc][\\W_]*[кk][\\W_]*|[сsc][\\W_]*[тt][\\W_]*|[лl][\\W_]*[иiu][\\W_]*[вbv][\\W_]*|[чтtc][\\W_]*)?(?:[аa][\\W_]*я|[оo0][\\W_]*[йемejm]|[ыi][\\W_]*[хйеejxh]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[иiu][\\W_]*[еe]|[оo0][\\W_]*[мm][\\W_]*[уyu]|[иiu][\\W_]*[йj]|[еe][\\W_]*[вbv]|[иiu][\\W_]*[мm](?:[\\W_]*[иiu])?)|[чтыйилijltcu]))?)|[\\W_]*[ыi](?:(?:[\\W_]*[вbv][\\W_]*[аa]|[\\W_]*[нhn](?:[\\W_]*[нhn])?)(?:(?:[\\W_]*(?:[иеeiu]ш[\\W_]*[ьb][\\W_]*[сsc][\\W_]*я|[тt][\\W_]*(?:[ьb][\\W_]*[сsc][\\W_]*я|[ьb]|[еe][\\W_]*[сsc][\\W_]*[ьb]|[еe]|[иiu][\\W_]*[нhn][\\W_]*[уыеаeyiau])|(?:щ[\\W_]*(?:[иiu][\\W_]*[йj]|[аa][\\W_]*я|[иеeiu][\\W_]*[еe]|[еe][\\W_]*[гrg][\\W_]*[оo0])|ю[\\W_]*[тt])(?:[\\W_]*[сsc][\\W_]*я)?|[еe][\\W_]*[мтmt]|[лl][\\W_]*(?:(?:[иiu][\\W_]*)?[сsc][\\W_]*[ьяb]|[иiu]|[аa][\\W_]*[сsc][\\W_]*[ьb])|(?:[сsc][\\W_]*[тt][\\W_]*|[лl][\\W_]*[иiu][\\W_]*[вbv][\\W_]*|[чтtc][\\W_]*)?(?:[аa][\\W_]*я|[оo0][\\W_]*[йемejm]|[ыi][\\W_]*[хйеejxh]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[иiu][\\W_]*[еe]|[оo0][\\W_]*[мm][\\W_]*[уyu]|[иiu][\\W_]*[йj]|[еe][\\W_]*[вbv]|[иiu][\\W_]*[мm](?:[\\W_]*[иiu])?))))|[рpr][\\W_]*[ьb]))|я[\\W_]*[бb6](?:[\\W_]*[оеёаиуeioyau0])?(?:(?:[\\W_]*[нhn](?:[\\W_]*[нhn])?[\\W_]*[яуаиьiybau]?)?(?:(?:[\\W_]*(?:[иеeiu]ш[\\W_]*[ьb][\\W_]*[сsc][\\W_]*я|[тt][\\W_]*(?:[ьb][\\W_]*[сsc][\\W_]*я|[ьb]|[еe][\\W_]*[сsc][\\W_]*[ьb]|[еe]|[иiu][\\W_]*[нhn][\\W_]*[уыеаeyiau])|(?:щ[\\W_]*(?:[иiu][\\W_]*[йj]|[аa][\\W_]*я|[иеeiu][\\W_]*[еe]|[еe][\\W_]*[гrg][\\W_]*[оo0])|ю[\\W_]*[тt])(?:[\\W_]*[сsc][\\W_]*я)?|[еe][\\W_]*[мтmt]|[кk](?:[\\W_]*[иаiau])?|[аa][\\W_]*[лl](?:[\\W_]*[сsc][\\W_]*я)?|[лl][\\W_]*(?:[аa][\\W_]*[нhn]|[оаoa0](?:[\\W_]*[мm])?|(?:[иiu][\\W_]*)?[сsc][\\W_]*[ьяb]|[иiu])|[рpr][\\W_]*[ьb]|[сsc][\\W_]*[яьb]|[нhn][\\W_]*[оo0]|[чc][\\W_]*(?:[иiu][\\W_]*[хxh]|[еe][\\W_]*[сsc][\\W_]*[тt][\\W_]*[ьиibu](?:[\\W_]*ю)?)|(?:[тt][\\W_]*[еe][\\W_]*[лl][\\W_]*[ьb][\\W_]*[сsc][\\W_]*[кk][\\W_]*|[сsc][\\W_]*[тt][\\W_]*|[лl][\\W_]*[иiu][\\W_]*[вbv][\\W_]*|[чтtc][\\W_]*)?(?:[аa][\\W_]*я|[оo0][\\W_]*[йемejm]|[ыi][\\W_]*[хйеejxh]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[иiu][\\W_]*[еe]|[оo0][\\W_]*[мm][\\W_]*[уyu]|[иiu][\\W_]*[йj]|[еe][\\W_]*[вbv]|[иiu][\\W_]*[мm](?:[\\W_]*[иiu])?)|[чмйилijlmcu]))|(?:[\\W_]*[нhn](?:[\\W_]*[нhn])?[\\W_]*[яуаиьiybau]?)))|я[\\W_]*[бb6][\\W_]*(?:[еёаиуeiyau][\\W_]*)?(?:[нhn][\\W_]*(?:[нhn][\\W_]*)?(?:[яуаиьiybau][\\W_]*)?)?[тt])",
            //сьеб(у|(е(л(и)?|шь|те)?(сь)?))
            "[сsc][\\W_]*[ьъb][\\W_]*[еяёe][\\W_]*[бb6][\\W_]*(?:[уyu]|(?:[еиёауeiyau](?:[\\W_]*[лl](?:[\\W_]*[иоаioau0])?|[\\W_]*ш[\\W_]*[ьb]|[\\W_]*[тt][\\W_]*[еe])?(?:[\\W_]*[сsc][\\W_]*[ьяb])?))",
            //е(б(укентий|ен(ь|я(м)?)|и(цкая|ческая)|лище|а(льник(и)?|торий|н(троп|ати(к|ческий))))|дрит)
            "[еe][\\W_]*(?:[бb6][\\W_]*(?:[уyu][\\W_]*[кk][\\W_]*[еe][\\W_]*[нhn][\\W_]*[тt][\\W_]*[иiu][\\W_]*[йj]|[еe][\\W_]*[нhn][\\W_]*(?:[ьb]|я(?:[\\W_]*[мm])?)|[иiu][\\W_]*(?:[цc][\\W_]*[кk][\\W_]*[аa][\\W_]*я|[чc][\\W_]*[еe][\\W_]*[сsc][\\W_]*[кk][\\W_]*[аa][\\W_]*я)|[лl][\\W_]*[иiu][\\W_]*щ[\\W_]*[еe]|[аa][\\W_]*(?:[лl][\\W_]*[ьb][\\W_]*[нhn][\\W_]*[иiu][\\W_]*[кk](?:[\\W_]*[иаiau])?|[тt][\\W_]*[оo0][\\W_]*[рpr][\\W_]*[иiu][\\W_]*[йj]|[нhn][\\W_]*(?:[тt][\\W_]*[рpr][\\W_]*[оo0][\\W_]*[пnp]|[аa][\\W_]*[тt][\\W_]*[иiu][\\W_]*(?:[кk]|[чc][\\W_]*[еe][\\W_]*[сsc][\\W_]*[кk][\\W_]*[иiu][\\W_]*[йj]))))|[дd][\\W_]*[рpr][\\W_]*[иiu][\\W_]*[тt])",
            //невротъебательски(ый|ая|ое|ых|ые|ым(и)?|ую|ому)
            "[нhn][\\W_]*[еe][\\W_]*[вbv][\\W_]*[рpr][\\W_]*[оo0][\\W_]*[тt][\\W_]*ъ[\\W_]*[еe][\\W_]*[бb6][\\W_]*[аa][\\W_]*[тt][\\W_]*[еe][\\W_]*[лl][\\W_]*[ьb][\\W_]*[сsc][\\W_]*[кk][\\W_]*[иiu][\\W_]*(?:[ыиiu][\\W_]*[йj]|[аa][\\W_]*я|[оo0][\\W_]*[ейej]|[ыi][\\W_]*[хxh]|[ыi][\\W_]*[еe]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu])",
            //у(ёб(ище|ан(тус)?(ав|ы)?)|род(ав|ы)?|блюд(ок|к(ав(и)?|и)?))
            "[уyu][\\W_]*(?:[ёеe][\\W_]*[бb6][\\W_]*(?:[иiu][\\W_]*щ[\\W_]*[еаea]|[аa][\\W_]*[нhn](?:[\\W_]*[тt][\\W_]*[уyu][\\W_]*[сsc])?(?:[\\W_]*[аоoa0][\\W_]*[вмbmv]|[\\W_]*[ыуеаeyiau])?)|[рpr][\\W_]*[оo0][\\W_]*[дd](?:[\\W_]*[аоoa0][\\W_]*[вмbmv]|[\\W_]*[ыуеаeyiau])?|[бb6][\\W_]*[лl][\\W_]*ю[\\W_]*[дd][\\W_]*(?:[оo0][\\W_]*[кk]|[кk][\\W_]*(?:[аоoa0][\\W_]*[вмbmv](?:[\\W_]*[иiu])?|[иуеаeiyau])?))",
            //м(уд(оха(ться|юсь|ешься)|а(к(и|ом)?|ч(ье|ину|к(а|ой)))|ень|ил(а?))|анду|л(ин|я))
            "[мm][\\W_]*(?:[уyu][\\W_]*[дd][\\W_]*(?:[оo0][\\W_]*[хxh][\\W_]*[аa][\\W_]*(?:[тt][\\W_]*[ьb][\\W_]*[сsc][\\W_]*я|ю[\\W_]*[сsc][\\W_]*[ьb]|[еe][\\W_]*ш[\\W_]*[ьb][\\W_]*[сsc][\\W_]*я)|[аa][\\W_]*(?:[кk](?:[\\W_]*[иаiau]|[оo0][мвbmv])?|[чc][\\W_]*(?:[ьb][\\W_]*[еёe]|[иiu][\\W_]*[нhn][\\W_]*[уыаyiau]|[кk][\\W_]*(?:[аиеуeiyau]|[оo0][\\W_]*[йj])))|[еe][\\W_]*[нhn][\\W_]*[ьb]|[иiu][\\W_]*[лl](?:[\\W_]*[аеоыeoia0]?))|[аa][\\W_]*[нhn][\\W_]*[дd][\\W_]*[уаyau]|[лl][\\W_]*(?:[иiu][\\W_]*[нhn]|я))",
            //(м(озг|уд)|д(олб|ур)|скот|жид)а(хуи|ёб(ев|ы|ство(м)?|изм)?)
            "(?:[мm][\\W_]*(?:[оo0][\\W_]*[з3z][\\W_]*[гrg]|[уyu][\\W_]*[дd])|[дd][\\W_]*(?:[оo0][\\W_]*[лl][\\W_]*[бb6]|[уyu][\\W_]*[рpr])|[сsc][\\W_]*[кk][\\W_]*[оo0][\\W_]*[тt]|ж[\\W_]*[иiu][\\W_]*[дd])[\\W_]*[аоoa0][\\W_]*(?:[хxh][\\W_]*[уyu][\\W_]*[ийяiju]|[ёеe][\\W_]*[бb6](?:[\\W_]*[еоeo0][\\W_]*[вbv]|[\\W_]*[ыаia]|[\\W_]*[сsc][\\W_]*[тt][\\W_]*[вbv][\\W_]*[оуoy0u](?:[\\W_]*[мm])?|[иiu][\\W_]*[з3z][\\W_]*[мm])?)",
            //(не|за|от|по|на|рас)?(пизди|(ъ)?еба)((ться|ть|ли|ал|л|cь|ит|и|те|чу|шь)|(й|им(и)?|йс(к(ый|ая|ое|ых|ым(и)?|ую|ому)|тво(м)?)))
            "(?:[нhn][\\W_]*[еe][\\W_]*|[з3z][\\W_]*[аa][\\W_]*|[оo0][\\W_]*[тt][\\W_]*|[пnp][\\W_]*[оo0][\\W_]*|[нhn][\\W_]*[аa][\\W_]*|[рpr][\\W_]*[аa][\\W_]*[сз3szc][\\W_]*)?(?:[пnp][\\W_]*[иiu][\\W_]*[з3z][\\W_]*[дd][\\W_]*[ияеeiu]|(?:ъ)?[еёe][\\W_]*[бb6][\\W_]*[аa])[\\W_]*(?:(?:[тt][\\W_]*[ьb][\\W_]*[сsc][\\W_]*я|[тt][\\W_]*[ьb]|[лl][\\W_]*[иiu]|[аa][\\W_]*[лl]|[лl]|c[\\W_]*[ьb]|[иiu][\\W_]*[тt]|[иiu]|[тt][\\W_]*[еe]|[чc][\\W_]*[уyu]|ш[\\W_]*[ьb])|(?:[йяиiju]|[иеeiu][\\W_]*[мm](?:[\\W_]*[иiu])?|[йj][\\W_]*[сsc][\\W_]*(?:[кk][\\W_]*(?:[ыиiu][\\W_]*[йеej]|[аa][\\W_]*я|[оo0][\\W_]*[еe]|[ыi][\\W_]*[хxh]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu])|[тt][\\W_]*[вbv][\\W_]*[оуаoya0u](?:[\\W_]*[мm])?)))",
            //педар((ас((т)?(ы|ом(и)?|ка)?|(ы|ом(и)?|ов)))|(ы|ом(и)?|ов|ня))?
            "[пnp][\\W_]*[еиыeiu][\\W_]*[дd][\\W_]*[аеэоeoa0][\\W_]*[рpr](?:(?:[\\W_]*[аa][\\W_]*[сз3szc](?:(?:[\\W_]*[тt])?(?:[\\W_]*[ыi]|[\\W_]*[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?|[\\W_]*[кk][\\W_]*[аиiau])?|(?:[\\W_]*[ыуаеeyiau]|[\\W_]*[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?|[\\W_]*[оo0][\\W_]*[вbv])))|[\\W_]*(?:[ыуаеeyiau]|[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?|[оo0][\\W_]*[вbv]|[нhn][\\W_]*я))?",
            //пиз(ь)?д(ё(ныш(ь)?|ш(ь)?)|у(й(те)?|н(ы)?)|ю(к((а|ов|ам(и)?))?|л(ь|ей|ях))|ец|а(ну)?т(ий|ая|о(е)?|ые|ым(и)?|ую|ому|ее|а)|анул(а)?|ы|о(й|хуй|еб|(рот|голов)(ый|ая|ое|ых|ые|ым(и)?|ую|ому)|б(ратия|ол(а)?)))
            "[пnp][\\W_]*[иiu][\\W_]*[з3z][\\W_]*(?:[ьb][\\W_]*)?[дd][\\W_]*(?:[ёеe][\\W_]*(?:[нhn][\\W_]*[ыi][\\W_]*ш(?:[\\W_]*[ьb])?|[шнжhn](?:[\\W_]*[ьb])?)|[уyu][\\W_]*(?:[йj](?:[\\W_]*[тt][\\W_]*[еe])?|[нhn](?:[\\W_]*[ыi])?)|ю[\\W_]*(?:[кk](?:[\\W_]*(?:[аеуиeiyau]|[оo0][\\W_]*[вbv]|[аa][\\W_]*[мm](?:[\\W_]*[иiu])?))?|[лl](?:[ьиibu]|[еe][\\W_]*[йj]|я[\\W_]*[хмmxh]))|[еe][\\W_]*[цc]|[аоoa0][\\W_]*(?:[нhn][\\W_]*[уyu][\\W_]*)?[тt][\\W_]*(?:[иiu][\\W_]*[йj]|[аa][\\W_]*я|[оo0](?:[\\W_]*[ейej])?|[ыi][\\W_]*[ейхejxh]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu]|[еe][\\W_]*[еe]|[ауьеыeyibau])|[аa][\\W_]*[нhn][\\W_]*[уyu][\\W_]*[лl](?:[\\W_]*[аиiau])?|[ыеуиаeiyau]|[оаoa0][\\W_]*(?:[йj]|[хxh][\\W_]*[уyu][\\W_]*[йj]|[еёe][\\W_]*[бb6]|(?:[рpr][\\W_]*[оo0][\\W_]*[тt]|[гrg][\\W_]*[оo0][\\W_]*[лl][\\W_]*[оo0][\\W_]*[вbv])[\\W_]*(?:[ыиiu][\\W_]*[йj]|[аa][\\W_]*я|[оo0][\\W_]*[ейej]|[ыi][\\W_]*[хxh]|[ыi][\\W_]*[еe]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu])|[бb6][\\W_]*(?:[рpr][\\W_]*[аa][\\W_]*[тt][\\W_]*[иiu][\\W_]*я|[оo0][\\W_]*[лl](?:[\\W_]*[аыуyiau])?)))",
            //п(адла|оскуд(ы|ом(и)?)|ид(ик|рил(л)?)(ом|и)?|роблядом)
            "[пnp][\\W_]*(?:[аa][\\W_]*[дd][\\W_]*[лl][\\W_]*[аоыoia0]|[оаoa0][\\W_]*[сsc][\\W_]*[кk][\\W_]*[уyu][\\W_]*[дd][\\W_]*(?:[ыуаеeyiau]|[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?)|[иеeiu][\\W_]*[дd][\\W_]*(?:[иiu][\\W_]*[кk]|[рpr][\\W_]*[иiu][\\W_]*[лl](?:[\\W_]*[лl])?)(?:[\\W_]*[оаoa0][\\W_]*[мвbmv]|[\\W_]*[иуеоыаeioyau0])?|[рpr][\\W_]*[оo0][\\W_]*[бb6][\\W_]*[лl][\\W_]*я[\\W_]*[дd][\\W_]*[оo0][\\W_]*[мm])",
            //(за|от|на)?ср(ать|ал(и)?|e)
            "(?:[з3z][\\W_]*[аa][\\W_]*|[оo0][\\W_]*[тt][\\W_]*|[нhn][\\W_]*[аa][\\W_]*)?[сsc][\\W_]*[рpr][\\W_]*(?:[аa][\\W_]*[тt][\\W_]*[ьb]|[аa][\\W_]*[лl](?:[\\W_]*[иiu])?|[eуиiyu])",
            //сра(к(а|ой)|н(н)?(ь|(ый|ая|ое))|льник(и|ом)?)
            "[сsc][\\W_]*[рpr][\\W_]*[аa][\\W_]*(?:[кk][\\W_]*(?:[аеиуeiyau]|[оo0][\\W_]*[йj])|[нhn](?:[\\W_]*[нhn])?(?:[ьb]|(?:[\\W_]*[ыi][\\W_]*[йеej]|[\\W_]*[аa][\\W_]*я|[\\W_]*[оo0][\\W_]*[еe]))|[лl][\\W_]*[ьb][\\W_]*[нhn][\\W_]*[иiu][\\W_]*[кk](?:[\\W_]*[иiu]|[\\W_]*[оаoa0][\\W_]*[мm])?)",
            //(за)?трах(н(у(ть(ся)?|сь|л(а)?)?|ешься)|а(л(а)?|ть(ся)?|н(н)?(ый|ая|ой|ых|ые|ым(и)?|ую|ому)))
            "(?:[з3z][\\W_]*[аa][\\W_]*)?[тt][\\W_]*[рpr][\\W_]*[аa][\\W_]*[хxh][\\W_]*(?:[нhn][\\W_]*(?:[уyu](?:[\\W_]*[тt][\\W_]*[ьb](?:[\\W_]*[сsc][\\W_]*я)?|[\\W_]*[сsc][\\W_]*[ьb]|[\\W_]*[лl](?:[\\W_]*[аиiau])?)?|[еиeiu][\\W_]*ш[\\W_]*[ьb][\\W_]*[сsc][\\W_]*я)|[аa][\\W_]*(?:[лl](?:[\\W_]*[аоиioau0])?|[тt][\\W_]*[ьb](?:[\\W_]*[сsc][\\W_]*я)?|[нhn][\\W_]*(?:[нhn][\\W_]*)?(?:[ыиiu][\\W_]*[йj]|[аa][\\W_]*я|[оo0][\\W_]*[йеej]|[ыi][\\W_]*[хxh]|[ыi][\\W_]*[еe]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu])))",
            //(ни|по|на|о(т)?|да|за)?((фиг|х(е(й)?р|рен|у(й)?))(ев(ающ|ш)?)?(ал)?(н)?((ию|я(м(и)?|р(ю|и(т(ься)?|л(и)?))|ч(ат(ся)|ил(и)?)|ч(ь)?)|е(т(ой|а)|е(те|шь))|а|ли|чу)))
            "(?:[нhn][\\W_]*[иеeiu][\\W_]*|[пnp][\\W_]*[оo0][\\W_]*|[нhn][\\W_]*[аa][\\W_]*|[оаoa0][\\W_]*(?:[тt][\\W_]*)?|[дd][\\W_]*[аоoa0][\\W_]*|[з3z][\\W_]*[аa][\\W_]*)?(?:(?:[фf][\\W_]*[иiu][\\W_]*[гrg]|[хxh][\\W_]*(?:[еиeiu][\\W_]*(?:[йj][\\W_]*)?[рpr]|[рpr][\\W_]*[еe][\\W_]*[нhn]|[уyu](?:[\\W_]*[йj])?))(?:[\\W_]*[еоёeo0][\\W_]*[вbv](?:[\\W_]*[аa][\\W_]*ю[\\W_]*щ|[\\W_]*ш)?)?(?:[\\W_]*[аиеeiau][\\W_]*[лнlhn])?(?:[нhn])?(?:[\\W_]*(?:[иаоёяыеeioau0][юяиевмйbeijmvu]|я[\\W_]*(?:[мm](?:[\\W_]*[иiu])?|[рpr][\\W_]*(?:ю|[иiu][\\W_]*(?:[тt](?:[\\W_]*[ьеeb][\\W_]*[сsc][\\W_]*[яьb])?|[лl](?:[\\W_]*[иоаioau0])?))|[чc][\\W_]*(?:[аиiau][\\W_]*[тt](?:[\\W_]*[сsc][\\W_]*я)|[иiu][\\W_]*[лl](?:[\\W_]*[иоаioau0])?)|[чc](?:[\\W_]*[ьb])?)|[еe][\\W_]*(?:[тt][\\W_]*(?:[оo0][\\W_]*[йj]|[аьуybau])|[еe][\\W_]*(?:[тt][\\W_]*[еe]|ш[\\W_]*[ьb]))|[аыоуяюйиijoyau0]|[лl][\\W_]*[иоiou0]|[чc][\\W_]*[уyu])))",
            //(фиг|х(е(й)?р|рен|уй))
            "(?:[фf][\\W_]*[иiu][\\W_]*[гrg]|[хxh][\\W_]*(?:[еиeiu][\\W_]*(?:[йj][\\W_]*)?[рpr]|[рpr][\\W_]*[еe][\\W_]*[нhn]|[уyu][\\W_]*[йj]))",
            //ху(е(сос|плет|ныш)(а|ом(и)?|н(ый|ая|ой|ых|ые|ым(и)?|ую|ому))?|доёбин(ой|а))
            "[хxh][\\W_]*[уyu][\\W_]*(?:[еёиeiu][\\W_]*(?:[сsc][\\W_]*[оo0][\\W_]*[сsc]|[пnp][\\W_]*[лl][\\W_]*[еe][\\W_]*[тt]|[нhn][\\W_]*[ыi][\\W_]*ш)(?:[\\W_]*[аыуyiau]|[\\W_]*[оаoa0][\\W_]*[мm](?:[\\W_]*[иiu])?|[нhn][\\W_]*(?:[ыиiu][\\W_]*[йj]|[аa][\\W_]*я|[оo0][\\W_]*[йеej]|[ыi][\\W_]*[хxh]|[ыi][\\W_]*[еe]|[ыi][\\W_]*[мm](?:[\\W_]*[иiu])?|[уyu][\\W_]*ю|[оo0][\\W_]*[мm][\\W_]*[уyu]))?|[дd][\\W_]*[оo0][\\W_]*ё[\\W_]*[бb6][\\W_]*[иiu][\\W_]*[нhn][\\W_]*(?:[оo0][\\W_]*[йj]|[аеыуeyiau]))",
            //бля(д(ь|и|ки|ство|ск(ое|ие|ая|ий|ого)))?
            "[бb6][\\W_]*[лl][\\W_]*я(?:[\\W_]*[дтdt][\\W_]*(?:[ьb]|[иiu]|[кk][\\W_]*[иiu]|[сsc][\\W_]*[тt][\\W_]*[вbv][\\W_]*[оo0]|[сsc][\\W_]*[кk][\\W_]*(?:[оo0][\\W_]*[ейej]|[иiu][\\W_]*[еe]|[аa][\\W_]*я|[иiu][\\W_]*[йj]|[оo0][\\W_]*[гrg][\\W_]*[оo0])))?",
            //выбляд(ок|к(и|ам(и)?))
            "[вbv][\\W_]*[ыi][\\W_]*[бb6][\\W_]*[лl][\\W_]*я[\\W_]*[дd][\\W_]*(?:[оo0][\\W_]*[кk]|[кk][\\W_]*(?:[иуаеeiyau]|[аa][\\W_]*[мm](?:[\\W_]*[иiu])?))",
            //(за)(падло|луп(ой|а))
            "(?:[з3z][\\W_]*[аоoa0][\\W_]*)(?:[пnp][\\W_]*[аоoa0][\\W_]*[дd][\\W_]*[лl][\\W_]*[оыаoia0]|[лl][\\W_]*[уyu][\\W_]*[пnp][\\W_]*(?:[оo0][\\W_]*[йj]|[аеыуeyiau]))",
            //шлюх(а|ой)
            "ш[\\W_]*[лl][\\W_]*ю[\\W_]*[хxh][\\W_]*(?:[ауеиeiyau]|[оo0][\\W_]*[йj])",
            //анус(е|ом)
            "[аa][\\W_]*[нhn][\\W_]*[уyu][\\W_]*[сsc](?:[\\W_]*[еаыуeyiau]|[\\W_]*[оo0][\\W_]*[мm])?",
            //(\w*(х(рен|уи)|пе(зд|д(ер|р))|бляд|охуе|муде|дерь|гавн|уеб)|х(рен|уй)|пе(зд|д(ер|р))|бляд|охуе|муде|дерь|гавн|уеб|ёб)\w+
            "(?:\\w*(?:[хxh](?:[рpr][еe][нhn]|[уyu][иiu])|[пnp][еиeiu](?:[з3z][дd]|[дd](?:[еаоeoa0][рpr]|[рpr]))|[бb6][лl]я[дd]|[оo0][хxh][уyu][еe]|[мm][уyu][дd][еоиаeioau0]|[дd][еe][рpr][ьb]|[гrg][аоoa0][вbv][нhn]|[уyu][еёe][бb6])|[хxh][\\W_]*(?:[рpr][\\W_]*[еe][\\W_]*[нhn]|[уyu][\\W_]*[йиеяeiju])|[пnp][\\W_]*[еиeiu][\\W_]*(?:[з3z][\\W_]*[дd]|[дd][\\W_]*(?:[еаоeoa0][\\W_]*[рpr]|[рpr]))|[бb6][\\W_]*[лl][\\W_]*я[\\W_]*[дd]|[оo0][\\W_]*[хxh][\\W_]*[уyu][\\W_]*[еe]|[мm][\\W_]*[уyu][\\W_]*[дd][\\W_]*[еоиаeioau0]|[дd][\\W_]*[еe][\\W_]*[рpr][\\W_]*[ьb]|[гrg][\\W_]*[аоoa0][\\W_]*[вbv][\\W_]*[нhn]|[уyu][\\W_]*[еёe][\\W_]*[бb6]|[ёеe][бb6])\\w+"
    };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment