Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Регулярные_выражения
#1
Приветствую знатоки.
В некоторых сборках есть конфиг на маты и спам в виде
(?iu)\b(мудак|mudak|mydak)
(?iu)\b(о|при|на|по|за|не|до)?(\)\(|х)[е3и]р(ов|н|а\b)

Мб кто работал с Регулярными выражениями и может подсказать, как между буквами запретить символы и пробелы.

Пример:
P_E,D.R.I L. /A W S
Ответ
#2
Valent Написал:Приветствую знатоки.
В некоторых сборках есть конфиг на маты и спам в виде
(?iu)\b(мудак|mudak|mydak)
(?iu)\b(о|при|на|по|за|не|до)?(\)\(|х)[е3и]р(ов|н|а\b)

Мб кто работал с Регулярными выражениями и может подсказать, как между буквами запретить символы и пробелы.

Пример:
P_E,D.R.I L. /A W S

Никак, забудь. Универсальная проверка выйдет тебе в очень большую нагрузку. Запрет пробелов между буквами только в матах так:

(м[ ]*у[ ]*д[ ]*а[ ]*к |итд)


Но имей ввиду, что кроме пробелов могут быть еще другие знаки, так что забудь...
Ответ
#3
В смысле между буквами? А как Вы предлагаете различать, например, слова от букв с пробелами?)
По примеру, Вам наоборот надо учитывать их.
Код:
?[\W\s]
[Изображение: CWtJWI1.png]
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#4
Pointer*Rage Написал:В смысле между буквами? А как Вы предлагаете различать, например, слова от букв с пробелами?)

да, он не верно выразился, но смысл был понятен, что именно для слов с матами.
Ответ
#5
Pointer*Rage Написал:В смысле между буквами? А как Вы предлагаете различать, например, слова от букв с пробелами?)
По примеру, Вам наоборот надо учитывать их.
Код:
?[\W\s]
[Изображение: CWtJWI1.png]

Спамеры обычно пишет:
Переходи на Laweo w .s

Слово целиком Laweo я забил и его блочит, а такие варианты как выше с пробелами и символами нет. Можете ли для примера показать как учесть символы и пробелы.
Ответ
#6
l\W*a\W*w\W*e\W*o\W*w\W*s

Офигенный, конечно, подход
Уж лучше выкашивать эти самые \W (не буквы/цифры) и проверять, есть ли такое слово (или однокоренное) в словаре.
Ответ
#7
Valent Написал:Спамеры обычно пишет:
Переходи на Laweo w .s

Слово целиком Laweo я забил и его блочит, а такие варианты как выше с пробелами и символами нет. Можете ли для примера показать как учесть символы и пробелы.
Код:
[Ll][\W\s]*[Aa][\W\s]*[Vv][\W\s]*[Ee][\W\s]*[Oo]
[Изображение: CxVpMjU.png]

Не будет корректно работать с русскими словами, а так же не защищает от подмен букв различных языков. Правится легко, пусть будет, как домашнее задание.

Добавлено через 5 минут
shegan Написал:l\W*a\W*w\W*e\W*o\W*w\W*s

Офигенный, конечно, подход
Уж лучше выкашивать эти самые \W (не буквы/цифры) и проверять, есть ли такое слово (или однокоренное) в словаре.

Я почему-то не уверен, что убирание из текста "левых" символов будет быстрее регулярки (тем более, что их можно генерить автоматически, с учетом подмен и т.п., сам же видел у меня). Тем более надо будет делать механизмы разбора уже конкретно СЛОВ, т.к. отличить словосочетание от слова, в котором наставлены пробелы - очень проблематично (на этот случай надо иметь большой такой словарик обычных слов, плюс учитывать, что игроки часто пишут неграмотно, сленговую речь, транслит и т.д.).
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#8
Pointer*Rage Написал:
Код:
[Ll][\W\s]*[Aa][\W\s]*[Vv][\W\s]*[Ee][\W\s]*[Oo]
[Изображение: CxVpMjU.png]

Не будет корректно работать с русскими словами, а так же не защищает от подмен букв различных языков. Правится легко, пусть будет, как домашнее задание.

Добавлено через 5 минут


Я почему-то не уверен, что убирание из текста "левых" символов будет быстрее регулярки (тем более, что их можно генерить автоматически, с учетом подмен и т.п., сам же видел у меня). Тем более надо будет делать механизмы разбора уже конкретно СЛОВ, т.к. отличить словосочетание от слова, в котором наставлены пробелы - очень проблематично (на этот случай надо иметь большой такой словарик обычных слов, плюс учитывать, что игроки часто пишут неграмотно, сленговую речь, транслит и т.д.).

Спасибо, работает. Мне для пару серверов где админы дурачки.

Добавлено через 29 минут
Pointer*Rage Написал:
Код:
[Ll][\W\s]*[Aa][\W\s]*[Vv][\W\s]*[Ee][\W\s]*[Oo]
[Изображение: CxVpMjU.png]

Не будет корректно работать с русскими словами, а так же не защищает от подмен букв различных языков. Правится легко, пусть будет, как домашнее задание.

Добавлено через 5 минут


Я почему-то не уверен, что убирание из текста "левых" символов будет быстрее регулярки (тем более, что их можно генерить автоматически, с учетом подмен и т.п., сам же видел у меня). Тем более надо будет делать механизмы разбора уже конкретно СЛОВ, т.к. отличить словосочетание от слова, в котором наставлены пробелы - очень проблематично (на этот случай надо иметь большой такой словарик обычных слов, плюс учитывать, что игроки часто пишут неграмотно, сленговую речь, транслит и т.д.).
Домашнее задание
[Aa|Аа][\W\s]*[Vv][\W\s]*[Ee][\W\s]*[Rr][\W\s]*[Ii][\W\s]*[Aa|Аа]
Вроде так)
Ответ
#9
Valent Написал:Спасибо, работает. Мне для пару серверов где админы дурачки.

Добавлено через 29 минут

Домашнее задание
[Aa|Аа][\W\s]*[Vv][\W\s]*[Ee][\W\s]*[Rr][\W\s]*[Ii][\W\s]*[Aa|Аа]
Вроде так)

1. Можно не писать ИЛИ, если указывается рендж.
2. Из коробки \W детектирует не буквы; все языки, кроме английского не считаются за буквы Smile
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#10
Pointer*Rage Написал:1. Можно не писать ИЛИ, если указывается рендж.
2. Из коробки \W детектирует не буквы; все языки, кроме английского не считаются за буквы Smile

Просто если не делать или то без А русского veria не пойдет в блок.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)