클리앙UI 확장프로그램에 정규식 키워드 차단/강조 기능이 최근 추가되었는데...
아무래도 정규식은 익숙하지 않은 분들이 있으므로
복사/붙여넣기로 응용하기 쉬운 몇가지 유용한 패턴 샘플들 적어둡니다.
🔸 특정 문자로 시작하는 제목
^시작문자
예를 들어 키워드로
^# 를 등록하면, #으로 시작하는 제목만 강조하거나 차단하고,
조금 더 응용해서 ^\[.+?] 를 등록하면, 각괄호로 시작되는 말머리와 매칭되는데... 말머리 강조를 굳이 할 일은 없겠죠? -ㅅ-
🔸 특정 문자로 끝나는 제목
끝문자$
\.jpg$ 를 등록하면, .jpg로 끝나는 제목을 강조하거나 차단해요.
🔸 스포 단어는 차단하고 싶지만, 스포라는 단어 앞에 '노'가 붙어서 '노스포'라면, 차단 스킵
(?<!노)스포
(?<!앞글자)글자, 앞글자가 일치하지 않는 패턴만 찾아내는 정규식
🔸 스포 단어는 차단하고 싶지만, 그 스포라는 단어 뒤에 '츠'가 붙어서 '스포츠'라면, 차단 스킵
스포(?!츠)
글자(?!뒷글자), 뒷글자가 일치하지 않는 패턴만 찾아내는 정규식
이 두가지 조건을 합친다면,
(?<!노)스포(?!츠)
이런 정규식이 됩니다.
이건 화이트리스트에 '노스포'와 '스포츠'를 넣어도 비슷하게 가능하지만,
화이트리스트는 모든 차단 키워드에 대응하는데, 정규식을 이용한 이 방법은 '스포'라는 키워드에만 '노스포'라는 해제 키워드가 적용되기 때문에 더 타이트한 차단 해제가 가능하죠.
..는 그냥 이렇게도 쓸 수 있다는 예를 보여주는거고, 일반적으로는 화이트리스트 쓰는게 편해요. ㅋㅋ
🔸 모든 '스포'를 차단하는게 아닌, 특정 작품명과 '스포'가 같이 있는 제목을 차단하고 싶다면,
가나다.*스포|스포.*가나다
이렇게 하면 '가나다'라는 글자와 '스포'라는 글자가 동시에 있을 때만 차단이 됩니다.
(.*는 모든 글자를 0회 이상 반복, |는 or)
만약 위에 노-스포-츠 조합과 결합해서,
'가나다'라는 제목을 가진 작품을 '노스포'와 '스포츠'를 제외한 '스포'라는 단어가 있을 때 차단하려면,
가나다.*(?<!노)스포(?!츠)|(?<!노)스포(?!츠).*가나다
이렇게 하면 되겠죠? (그냥 화이트 리스트 쓰세요. ㅋㅋ)
🔹 or 문자(|)는 사실 안써도 됩니다. 쉼표(,)로 키워드 2개를 각각 등록해도 결국 똑같아요.
가나다.*스포|스포.*가나다 는
이렇게 2 키워드로 따로따로 등록하는게 보기 더 편할수도 있습니다. 두 방법 중 편한걸로 하세요.
정규식을 사용하면 원하는 조건을 걸 수 있기 때문에
기존 단순 키워드 차단에 아쉬웠던 부분 상당수가 해결 될 것으로 보입니다.
정규식이 어렵더라도 일단 쉬운 것부터 조금씩 적용하다보면,
쌩 단어로 키워드 차단/강조 하는 것보단 더 유용할 거예요.
일단은 위에 적어둔 것을 복/붙 하는 것만으로도 대부분의 상황에 대응 가능할 것 같고
사실 잘 몰라서 정규식 패턴을 직접 못만들어도, 원하는 패턴을 클리앙에 물어보면 답변 달아주는 분들 많을겁니다. ㅋ
정규식 테스트는 https://regexr.com 여기에서 하면 편해요.
그리고
정규표현식 모드로 사용할 때는 몇몇 예약된 특수문자는 역슬래시(\)를 붙여서 escape처리를 해야 됩니다.
예를 들어서 ... 이라는 점 3개를 키워드로 등록하고 싶다면,
\.\.\.
이렇게 각각 글자 앞에 역슬래시를 붙여야해요.
역슬래시를 사용하지 않고 그냥 ... 이렇게 등록해버리면,
. 은 아무 글자 1개로 해석되기 때문에 의도하지 않은 결과가 나올 수 있거든요.
가나다, ABC, 123 이런 글자들 전부가 ... 이라는 정규식에 대응해버립니다.
3글자 이상의 모든 제목이 다 차단되거나 강조되어버리는거죠.
그냥 잘 모르겠으면, 키보드에 있는 (알파벳이나 숫자를 제외한)특수문자는 다 안전빵으로 escape처리 해버려도 큰 문제 없어요. ㅋ
자바스크립트 스타일이 지저분하지 않고 가장 깔끔한 것 같아요.
감사합니다! :)