RisuAI · Regex Lorebook

로어북 키워드,
정규식으로 바꾸기

정규식 로어북은 활성화 키를 패턴으로 쓰는 기능이다. 기본 매칭은 공백·대소문자를 지우고 부분 문자열만 보기 때문에 yuzutea에도 yuzu 로어북이 켜지지만, 정규식 키는 단어 경계까지 정확히 잡는다. 항목 설정에서 정규식 사용을 켜고 아래 형식으로 키를 쓰면 된다.

한 줄 요약 — 이 형식만 기억하면 됨

/한글키워드|한자키워드|\b영어숫자키워드\b/i
PR #1532 이 형식은 PR #1532가 머지된 버전부터 그대로 동작한다. 이전 버전은 맨 앞 /가 패턴에 섞여 들어가는 버그가 있어서 접두사 꼼수를 썼는데, 이제 꼼수는 지워야 한다 — 남겨두면 패턴의 일부로 해석된다.
01 / 키워드 변환기

"키워드, 키워드, 키워드" → 정규식

쉼표로 구분한 기존 활성화 키를 붙여넣으면 규칙대로 정규식 키를 만들어 준다. 규칙은 단순하다: 한글·한자·가나는 그대로, 영어·숫자는 \b로 감싸고, 전부 |로 이어 /…/i에 넣는다.

Converter

기존 키 → 정규식 키

결과를 복사해서 로어북 활성화 키 칸에 붙여넣고, 정규식 사용을 켜면 끝.

위에 키워드를 입력하면 여기에 나와요

CJK+영어가 섞인 키워드는 \b가 불안정해서 그대로 둔다. 정규식 특수문자(. ( ) * + ? 등)는 자동으로 이스케이프해 문자 그대로 매칭한다. 결과에는 쉼표가 절대 들어가지 않는다 — 이유는 아래 학습지 참고.

키와 메시지를 채우면 RisuAI와 같은 방식으로 판정해요
02 / 로어북 통째로 변환

JSON 올리면 임포트용 JSON으로

RisuAI에서 내보낸 로어북 JSON을 올리면 항목마다 정규식 키를 만들어 준다. 하나씩 복사해도 되고, 아래에서 재임포트용 JSON을 통째로 받아 RisuAI에 그대로 임포트해도 된다. 전부 브라우저 안에서만 처리된다.

0 변환 0 이미 정규식 0 형식 오류 0 변환 불필요

재임포트용 JSON

변환된 키가 반영된 전체 로어북. RisuAI 로어북 메뉴의 가져오기로 그대로 불러올 수 있다.

주의: RisuAI의 임포트는 기존 항목에 추가하는 방식이라, 같은 캐릭터에 다시 불러오면 원본과 변환본이 나란히 생긴다. 불러온 뒤 원본 항목을 지우거나, 미리 지우고 불러올 것. 이미 정규식이던 항목과 항상 활성·키 없음 항목은 원본 그대로 담긴다.

03 / 학습지

정규식 로어북, 5교시면 끝남

위 변환기가 뱉는 결과를 직접 읽고 고칠 수 있으면 졸업임. 교시마다 문제 하나씩 있으니까 풀고 가셈 ㅋㅋ 헷갈리면 위 변환기의 매칭 테스트 칸에 넣고 직접 돌려보면 됨.


1교시형식 — 키 전체가 /패턴/플래그 여야 함

정규식 사용 켜면 활성화 키는 무조건 슬래시로 감싼 패턴 + 플래그 형식이어야 함. 형식 어긋나거나 컴파일 안 되는 키가 하나라도 있으면 그 항목은 통째로 죽음 — 에러도 안 띄우고 그냥 조용히 안 켜짐. 이게 제일 무서운 거임 ㅋㅋ

/유즈|\byuzu\b/i   ← 슬래시 열고, 패턴, 슬래시 닫고, 플래그

매칭 대상은 메시지 원문 그대로임. 일반 모드처럼 소문자화·공백 제거 같은 거 미리 안 해줌.

문제. 키를 유즈|yuzu라고만 쓰면 어떻게 될까?

정답 까보기 ▾

슬래시가 없어서 형식 검사에서 광탈, 항목 통째로 꺼짐. /유즈|yuzu/i처럼 감싸야 함.

2교시플래그 i — 영어 있으면 그냥 무조건 붙여

정규식 모드는 대소문자 구분함. i 플래그 없으면 /yuzu/Yuzu 못 잡음. 한글·한자만 있는 키면 없어도 되는데, 붙인다고 손해 볼 것도 없으니 그냥 습관처럼 붙이셈.

/yuzu/ — 오직 소문자 yuzu
/yuzu/i yuzu Yuzu YUZU yUzU 전부

다른 플래그: s.이 줄바꿈도 매칭(여러 줄 룩어헤드에 필요), m^ $를 줄 단위로. g는 활성화 판정에 아무 이득 없으니까 쓰지 마셈.

문제. /라이벌|rival/ 키가 "He's my Rival."에 안 켜짐. 왜?

정답 까보기 ▾

i가 없어서 대문자 R을 못 잡은 거임. /라이벌|rival/i로 고치면 됨.

3교시\b — 영어·숫자에만 둘러주는 단어 울타리

\b는 단어 문자(알파벳·숫자·_)랑 비단어 문자(공백·따옴표·마침표·문자열 끝 등) 사이의 경계임. yuzuteayuzu 걸리는 오탐을 막는 핵심이 바로 이거.

/\byuzu\b/i 기준:

Yuzu smiled. 양쪽이 경계라 통과
"Yuzu-chan!" 하이픈·따옴표도 경계로 인정됨
yuzutea / goayuzu / yuzu4 옆에 단어 문자 붙어서 탈락
yuzu_chan _는 단어 문자 취급이라 경계 성립 안 함
한글엔 \b 안 먹힘

한글·한자·가나는 정규식 기준 "단어 문자"가 아니라서 \b 붙여봤자 있으나 마나임. 조사가 바로 붙는 한국어 특성상 경계 지정 실익도 없음. 그래서 CJK 키워드는 그대로 두고, 영어·숫자 키워드에만 \b를 감는 거임. 위 변환기 규칙이 바로 이거.

문제. DBA, database, 라이벌을 정규식 키로 바꿔보셈. (기본 매칭에선 contracted back의 공백이 지워지면서 …d ba…dba로 오탐나던 그 키 맞음 ㅋㅋ)

정답 까보기 ▾

/\bDBA\b|\bdatabase\b|라이벌/i

이제 DBA는 독립된 단어일 때만 잡히고, 공백 지워질 일 자체가 없으니 contracted back 오탐도 사라짐.

4교시쉼표 금지 — 무조건 파이프로

리수는 활성화 키 문자열을 정규식으로 해석하기 전에 쉼표로 잘라버림. 그래서 정규식 안에 쉼표 있으면 두 동강 나서 형식 검사 광탈 → 항목 전체 사망. 키워드 나누고 싶으면 쉼표 말고 OR인 | 쓰면 됨.

// ✕ 죽는 키 — {2,4}의 쉼표에서 잘려서 /\d{2 랑 4}호/i 로 분해됨
/\d{2,4}호/i

// ✓ 우회 — 반복을 풀어쓰면 됨
/\d\d\d?\d?/i
쉼표 쓰고 싶어지는 경우쉼표 없는 우회
{2,4} — 2~4회 반복\d\d\d?\d? 처럼 풀어쓰기
{3,} — 3회 이상\d{3}\d* ({n} 단독은 쉼표 없음 → 안전)
텍스트의 쉼표 문자 매칭\x2c 로 표기

문제. 정규식 키 두 개를 쉼표로 나열하면(/유즈/i, /\byuzu\b/i) 돌아갈까?

정답 까보기 ▾

돌아가긴 함 — 쉼표로 잘린 조각들이 각각 온전한 /…/i 형식이면 OR로 검사됨. 근데 |로 합친 /유즈|\byuzu\b/i 한 개가 더 짧고, 조각 하나 깨져서 전체 사망하는 리스크도 없음. 걍 합치셈.

5교시응용 — 조건 걸어서 활성화

룩어헤드 쓰면 "둘 다 있을 때만", "이건 없을 때만" 같은 조건도 키 하나로 걸 수 있음. 여기부터는 선택 과목이니까 필요할 때 와서 긁어가면 됨.

목적패턴
유즈 그리고 고아 둘 다 있으면/(?=[\s\S]*유즈)(?=[\s\S]*고아)/
yuzu 있고 뒤에 goa 없으면/\byuzu\b(?![\s\S]*goa)/i
Dr.Jongwon 표기 변형 전부/\bdr\.?\s?jongwon/i
여러 대안 묶기/(?:제1|제2|제3)의 폭탄/

[\s\S]는 줄바꿈 포함 아무 문자. .+s 플래그로도 같은 효과 낼 수 있음. 자주 쓰는 조각: \d 숫자, \w 단어 문자, \s 공백, ? 0~1회, + 1회 이상, [A-C] 범위.

문제. "회의"는 잡되 "회의감"은 거르려면?

정답 까보기 ▾

/회의(?!감)/ — 부정 룩어헤드로 바로 뒤에 "감" 붙는 경우만 제외하는 거임.

마지막 점검 — 옛날 꼼수 청소하고 가셈

옛글에서 배운 접두사 꼼수(버그 우회한다고 키 앞에 덧붙이던 그거) 남아 있으면 이제는 그게 패턴 일부로 해석됨. PR #1532 이후 버전에선 순수한 /패턴/플래그만 쓰면 됨. 위 02번에 로어북 올리면 형식 깨진 정규식 키도 같이 잡아주니까 한 번 돌려보셈.