Слежение за словами: можно ли запретить использование звёздочек с определёнными словами, чтобы они не работали как подстановочные знаки?

Я немного поискал, но не смог найти ответ, хотя приношу извинения, если он уже был где-то дан.

Коротко: у нас есть несколько пользователей, которые вместо использования слова для отслеживания обходят систему, публикуя его со звездочками. Например, они пишут «f**k». Мы попытались добавить это в список слов для отслеживания, но это привело к блокировке всего, что начинается с f и заканчивается на k, таких как feedback, firetruck и Frederick.

Есть ли способ добавить что-то подобное в список отслеживаемых слов так, чтобы оно искало только эту конкретную фразу и не рассматривалось как шаблон?

Я не пробовал, но экранирование обратными слэшами, например f\*\*k, вероятно, должно работать.

Кажется, работает. Спасибо за подсказку. :slight_smile:

Хм, нет… поспешил. Это не блокирует Фредерика, но и не блокирует е**ю.

Я думаю, что это работает там, поэтому я ожидал, что это будет работать и в Discourse. Мне интересно, почему это не так.

Я предполагаю, что это означает, что регулярные выражения должны быть включены, верно?

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

Похоже, что нужно включить настройку сайта


Редакция: после включения регулярных выражений символ “*” всё ещё воспринимается как подстановочный знак.

Но этого не происходит. Discourse воспринимает f\*\*k буквально. Таким образом, это работает, если пользователь действительно напишет f\*\*k.

Верно. :+1: Эта настройка по умолчанию отключена, и для наших хостинговых сайтов её нужно будет включить нам. Дайте знать, если вы хотите, чтобы мы это сделали. :slight_smile:

Кажется, что если вы перейдёте на неё, вам, возможно, потребуется преобразовать все ваши существующие отслеживаемые слова в формат регулярных выражений и применить их заново.

Регулярные выражения могут быть сложнее для точной настройки, чем упрощённая версия, но они более универсальны, если вы правильно составите выражение. В данном случае вам нужно что-то, что сможет идентифицировать множество обходов (f**k, f%ck, f&@k, fu<bla>ck). Хотя отловить их все может превратиться в игру «кто кого перещеголяет» (особенно если кто-то намеренно пытается обойти блокировку слов, вместо того чтобы использовать её как руководство по тому, что допустимо, а что нет).

Меня интересует — в целом, как мне посмотреть слово f**k? Давайте проигнорируем все варианты и т.п., но как мне сказать, что * — это не подстановочный знак, а символ? Экранирование не работает.

Включение регулярных выражений отслеживаемых слов и добавление f\*\*k в Блок, похоже, работает у меня? Вы тестируете с обычным пользователем или с администратором? На самом деле, Блок работает и для администраторов.

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

Мне нужно больше кофе.

Кстати, будьте осторожны: если у вас есть другие отслеживаемые слова и вы включите регулярные выражения, это повлияет на все слова, добавленные в список. Это означает, что вам нужно изменить границы слов, чтобы избежать частичных совпадений.