775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
1

Регулярное выражение шаблона-мата скрипта автоцензора

31.07.2013, 20:11. Показов 7287. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
К примеру для слова "падонаг", шаблон:
Код
/[п]+[а]+[д]+[о]+[н]+[а]+[г]+/i
но шаблон не сработает на слова "п а д о н а г", "п.а.д.о.н.а.г", "п..а~д~о~на=+г" и подобные. Подскажите шаблон?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2013, 20:11
Ответы с готовыми решениями:

Регулярное выражение
Есть html код который нужно так сказать распарсить, делаю так: Pattern p =...

Регулярное выражение
Товарищи, подскажите регулярное выражение Perl, чтобы определенная буква или цифра встречалась в...

Регулярное выражение
3,2,,,, 1,2,3,4,5 1,3,5,4,2 5,3,5,6,4 выражение : ,,,, возвращает 3 последних ряда. ...

Регулярное выражение
Помогите доработать паттерн, возвращающий в указанном случае в группе 1 "Иван Иванович", в группе...

17
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
31.07.2013, 20:29 2
/п.*а.*д.*о.*н.*а.*г.*/i
1
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
31.07.2013, 20:35 3
Цена решения автоцензор на базе регвыров неоправданно высока с точки зрения производительности и ресуроемкости операций
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
31.07.2013, 20:36 4
Подобные фильтры матов вот так в лоб - заранее провальная идея. Либо будет много некорректных срабатываний на стыках слов и в серединах слов, либо его можно будет легко обмануть.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
31.07.2013, 20:54  [ТС] 5
skaa, проверю
--
Денис Н., смотря какого обьема текст проверяется. рег выраж. ресурсоемки, но шаблонов не много. матов наберется около 80 слов.
--
Вован, вот в чате стоит этот автоцензор, проверьте. Вы не правы, не корректных срабатываний не было.

Добавлено через 2 минуты
Вован, обмануть... не легко На стыках и срединах слов срабатываний не было. Вы просто не верите в хороший автоцензор. Но идеальных не бывает алгоритмов, это верно.
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
31.07.2013, 21:07 6
Цитата Сообщение от tolimadokara Посмотреть сообщение
На стыках и срединах слов срабатываний не было
Было. Проверено.
Цитата Сообщение от tolimadokara Посмотреть сообщение
Вы просто не верите в хороший автоцензор.
На фоне больших масс людей с самыми разными складами ума не сможет один программист предусмотреть все возможные варианты никогда. Какой-то конкретный примитивный алгоритм может только осуществлять попытки разрулить те единичные частные случаи, на которые алгоритм был натянут.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
31.07.2013, 23:43  [ТС] 7
Цитата Сообщение от Vovan-VE
Было. Проверено.
На стыках не было не корректных срабатываний, в серединах есть срабатывания.
--
skaa, спасибо. Но еще, надо чтобы:
Код
/п[любой символ кроме буквы]а[любой символ кроме буквы]д[любой символ кроме буквы]о[любой символ кроме буквы]н[любой символ кроме буквы]а[любой символ кроме буквы]г/
--
Цитата Сообщение от Vovan-VE
На фоне больших масс людей с самыми разными складами ума не сможет один программист предусмотреть все возможные варианты никогда.
Правильно.
0
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
01.08.2013, 01:01 8
Надо заменить все точки на [\W0-9_]:
/п[\W0-9_]*а[\W0-9_]*д[\W0-9_]*о[\W0-9_]*н[\W0-9_]*а[\W0-9_]*г[\W0-9_]*/i
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.08.2013, 09:59 9
PHP
echo preg_match('/п[\W0-9_]*а[\W0-9_]*д[\W0-9_]*о[\W0-9_]*н[\W0-9_]*а[\W0-9_]*г[\W0-9_]*/iu', 'паадонаг') ? 'Низзя!' : 'Ззя!';
Добавлено через 1 минуту
тоже самое, с одной буквой 'a', но латинской
PHP
echo preg_match('/п[\W0-9_]*а[\W0-9_]*д[\W0-9_]*о[\W0-9_]*н[\W0-9_]*а[\W0-9_]*г[\W0-9_]*/iu', 'пaдонаг') ? 'Низзя!' : 'Ззя!';
кто захочет - все равно напишет. А вы лишь создадите лишнюю нагрузку. Если уж так хочется сделать автоцензор - скачайте список матных слов (я когда-то скачивал), и ищите вхождения. Куда лучше будет хотя бы в плане проверки (а по трате ресурсов, наверное, одинаково, а может, и больше)
1
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
01.08.2013, 10:47 10

Не по теме:

имхо хороший автоцензор без использования хотябы Байесовских фильтров вы не напишите... хотя, вам конечно виднее. Мое дело -- просто подсказать куда копать, если что:)



Добавлено через 5 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
и ищите вхождения
ну да, можно, кстати. слева и справа по "\b" поставить нужно, а то будет как в старые добрые времена:
"два кора[вырезано цензурой] выплывали из порта"
1
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
03.08.2013, 14:57  [ТС] 11

Не по теме:

Цитата Сообщение от KOROJI
кто захочет - все равно напишет
Прийдется по потеть хаму
Цитата Сообщение от KOROJI
А вы лишь создадите лишнюю нагрузку.
Ну, в моем случае будет такая нагрузка... так что сервер прогреется на 0.1 сек. больше, а электростанция отравит экологию лишними 5 микрограммами сажи


Цитата Сообщение от KOROJI
Если уж так хочется сделать автоцензор - скачайте список матных слов
Матов не много, можно все вспомнить без списка. Много различных производных от матов, различных лингв. склонений.
Цитата Сообщение от NebO
хороший автоцензор без использования хотябы Байесовских фильтров вы не напишите...
Напишем
Цитата Сообщение от NebO
можно, кстати. слева и справа по "\b" поставить нужно
Только в начале, имхо
--

Не по теме:

Если кому то будет интересно, заходите в чат потестить - учтены почти все замечания, исправлены все недоработки. Но остается одна конкретная дыра, это матерное слово написанное через \s, что не возможно обойти так как слова вырезаются с сообщения по \s.

0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.08.2013, 15:02 12
Цитата Сообщение от tolimadokara Посмотреть сообщение
Прийдется по потеть хаму
че там потеть-то? Стоит заменить любую букву на латинскую или поставить любую букву между двумя буквами слова, и все
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
03.08.2013, 15:07  [ТС] 13
Цитата Сообщение от KOROJI
че там потеть-то? Стоит заменить любую букву на латинскую
Это не прокатит, дожно зацензурить.
Цитата Сообщение от KOROJI
или поставить любую букву между двумя буквами слова, и все
А это проканает, но матерное слово уже не так воспринято будет.
0
KOPOJI
03.08.2013, 15:09
  #14

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Это не прокатит, дожно зацензурить.
с чего бы это? :) Ну зайдите в свой чат, посмотрите :D

0
elnorbert
03.08.2013, 15:21  [ТС]
  #15

Не по теме:

KOROJI, я не знаю что говорить... Не возможно :umbrage:

0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
03.08.2013, 15:25 16
Цитата Сообщение от tolimadokara Посмотреть сообщение
Только в начале, имхо
в русском языке много приставок ооочень много) и не все из них реально существуют)) хорошо, еще и окончаний.
а если не ставить, то вырезает слова типа "хлебал из миски", да и вообще, проверьте по словарю ваши комбинации.

далее. возьмите слова и банально напишите их побуквенно через пробел. остальные разделите по 4 пробела. Первую букву через точку, вторую через знак подчеркивания. По две точки. визуально все это будет воспринято как одно слово. а вот регулярку к такому вы уже не напишите. вернее напишите, но там тааакой будет бэктрейс, что вас задосить будет как два пальца.
Вырезать точки, знаки подчеркивания из каждого слова -- что еще? хорошо, заодно и [`~!,'] вырезайте, и может какие другие символы. С пробелами веселее -- границы слов уже не определите ну никак.
Вообщем, ладно) не вижу смысла продолжать этот бессмысленный спор) для одних очевидно одно, для других другое.

Не по теме:

Но как же хочется сказать: ***, русский язык -- это НЕ РЕГУЛЯРНАЯ ГРАММАТИКА! и даже не КС. И вообще тут нужны другие подходы, даже если бы вы ознакомились с классом КЗ. Даже она (а парсер к ней NP-полная задача) не даст вам достаточно точных результатов, пока вы не обучите этот парсер должным образом. И мы возвращаемся к Байесу



Добавлено через 2 минуты
о, кстати, вот же вам пример. хлебал и хлебало
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
03.08.2013, 16:43  [ТС] 17
Цитата Сообщение от NEbO
вот же вам пример. хлебал и хлебало
Не зацензурило: /\Aпадоноаг/

Добавлено через 1 час 12 минут

Не по теме:

Уважаемые, а что означает \W в шаблоне рег. выражения? Это не буквенный символ в верхнем регистре?

0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
03.08.2013, 16:48 18
Цитата Сообщение от tolimadokara Посмотреть сообщение
Это не буквенный символ в верхнем регистре
это все, кроме символов, которые относятся к "\w"
1
03.08.2013, 16:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2013, 16:48
Помогаю со студенческими работами здесь

Регулярное выражение
Имеется такая разметка <li class="cat-item cat-item-9"> <a...

Регулярное выражение. >,<,=
Нужно выбрать из таблицы только числа больше 1.000 Пишу : &lt;center&gt;&lt;b&gt;\.{3}&lt;\/td&gt; Но теряю...

Регулярное выражение: ()*|(11)*
Есть такое регулярное выражение: ()*|(11)* Нужно дать перечень всех слов, длина которых &lt;=5 ,...

Регулярное выражение
язык регулярных выражений интерпретируйте следующий шаблон: (\w+)\s(\1) не понимаю как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru