관심 단어 - 특정 단어에서 별표(*)가 와일드카드가 아닌 일반 문자로 사용되도록 막는 방법이 있나요?

조금 검색해 보았지만 답변을 찾지 못했습니다. 이미 어딘가에서 답변이 올라왔다면 죄송합니다.

요약하자면, 특정 감시 단어를 사용하는 대신 별표(*)를 이용해 시스템을 우회하는 몇몇 사용자가 있습니다. 예를 들어 "f**k"라고 작성하는 식입니다. 이걸 감시 단어에 추가하려고 했더니, f로 시작하고 k로 끝나는 모든 단어(예: feedback, firetruck, Frederick)가 차단되기 시작했습니다.

위와 같은 표현을 감시 단어에 추가할 때, 와일드카드로 처리하지 않고 해당 특정 구문만 정확히 검색하도록 설정하는 방법이 있을까요?

직접 시도해 보지는 않았지만, f\*\*k처럼 백슬래시로 이스케이프하면 작동할 가능성이 높습니다.

동작하는 것 같아요. 팁 알려주셔서 감사합니다. :slight_smile:

음, 아니야… 성급하게 말했네. 이건 프레드릭은 막지 않지만, f**k도 막지 못해.

거기에서는 작동하는 것 같으니, Discourse에서도 작동할 것으로 기대합니다. 왜 그런지 궁금합니다.

정규식(regex)이 활성화되어 있어야 한다는 뜻으로 이해하면 되는 거죠?

우리는 호스팅된 버전을 사용하고 있는데, 간단한 검색을 해보니 해당 기능이 켜져 있는지 확인하려면 팀에 문의해야 한다는 걸 알 수 있었습니다.

사이트 설정 중 하나를 활성화해야 하는 것 같습니다


정규식(regex)을 활성화한 후에도 여전히 "*"를 와일드카드로 인식합니다.

하지만 실제로는 그렇지 않습니다. Discourse는 f\*\*k를 그대로 해석합니다. 따라서 사용자가 실제로 f\*\*k를 입력할 경우에만 작동합니다.

맞습니다. :+1: 해당 설정은 기본적으로 비활성화되어 있으며, 호스팅 사이트의 경우 저희가 직접 활성화해야 합니다. 이 작업을 원하시면 알려 주세요. :slight_smile:

호스팅 버전으로 전환하시게 되면 기존에 설정해 둔 감시 단어(watched words)를 모두 정규식(regex) 형식으로 변환하고 다시 적용해야 할 수 있습니다.

정규식은 단순화된 버전보다 정확하게 작성하는 것이 더 어려울 수 있지만, 정규식 표현식을 올바르게 작성할 수만 있다면 더 유연하게 사용할 수 있습니다. 이 경우 여러 우회 방법(f**k, f%ck, f&@k, fu<bla>ck)을 식별할 수 있는 패턴이 필요할 것입니다. 다만, 모든 우회 방법을 잡아내는 것은 마치 해머로 두드려서 쥐를 잡는 게임(whack-a-mole)과 같을 수 있습니다(특히 누군가가 단어 차단을 우회하려는 의도가 명확할 때, 단순히 허용/비허용 기준을 따르는 경우보다 더욱 그렇습니다).

궁금한 점이 있습니다. 일반적으로 word f**k를 어떻게 검색할 수 있을까요? 모든 변형 등을 무시하고, *가 와일드카드가 아니라 문자로 취급되도록 하는 방법을 알고 싶습니다. 이스케이프를 사용해도 작동하지 않습니다.

watched words regular expressions를 켜고 f\*\*k를 차단 목록에 추가하면 제 환경에서는 잘 작동하는 것 같습니다? 일반 사용자 계정으로 테스트 중이신 건가요, 아니면 관리자 계정으로? 실제로 차단 기능은 관리자 계정도 차단할 수 있습니다.

관리자로서 말하지만, 다른 주제에서 말했듯이 오늘은 그런 날이고, 어제도 아마 비슷했을 거예요 — 이 문자열이 정규식이라고 시스템에 알려주지 않았거든요.

커피가 더 필요해.

참고로, 다른 감시 대상 단어도 있고 정규식(regex)을 활성화하면 목록에 추가된 모든 단어에 영향을 미칩니다. 따라서 부분 일치(partial match)를 피하려면 단어 경계를 변경해야 합니다.