정규식 스크립트
정규식 스크립트는 채팅 텍스트를 자동으로 바꿔 쓰는 찾기/바꾸기 규칙입니다. AI 답변을 다듬거나, 직접 쓴 메시지를 고치거나, 모델이 받는 텍스트를 바꿀 때 쓰세요. 쓰는 데 코딩 지식은 필요하지 않습니다.
정규식은 "정규 표현식"을 줄인 말로, 규칙에 맞는 텍스트를 찾아내는 검색 패턴입니다. 패턴을 한 번 설정해 두면 조건에 맞는 모든 메시지에 실행됩니다.
예: 어떤 모델은 행동 묘사를 별표로 감쌉니다.
*She smiles* Hello there.\([^]+)\* 패턴을 정확히 그대로 복사하세요. 이 패턴을 $1로 바꾸면 별표는 사라지고 안쪽 텍스트는 남습니다.
She smiles Hello there.$1은 "첫 번째 괄호 쌍이 붙잡은 텍스트"라는 뜻입니다. 그 밖에 괄호 안에 적힌 캐릭터 밖 설명 삭제, 특정 단어 검열, 한 캐릭터의 서식 버릇 교정에도 흔히 씁니다.
정규식 스크립트 만들기
전역 스크립트는 Presets(프리셋) 패널의 Regexes(정규식) 섹션에 있습니다. 상단 바의 Presets 버튼으로 패널을 여세요.
단계별로 정규식 스크립트 만들기
- Presets를 열고 Regexes를 찾으세요.
- Create regex(정규식 만들기)를 클릭하세요. 전체 편집기가 열립니다.
- 맨 위에 이름을 입력하세요. 새 스크립트의 이름은 "New Regex Script"입니다.
- Find Pattern (Regex)(패턴 찾기 (정규식))에
\([^]+)\*를 입력하세요(편집기 입력란 참고). - Replace With(교체할 내용)에
$1을 입력하세요. - Apply To(적용 대상)에서 AI Output을 선택된 상태로 두세요. 기본 적용 방식인 Only Display가 안전한 선택입니다(스크립트가 실행되는 위치 고르기 참고).
- Live Test(라이브 테스트)에
She smiles Hello there.를 붙여 넣으세요. Result:에She smiles Hello there.가 표시되어야 합니다. - Save(저장)를 클릭하세요. 초록색 Saved(저장됨) 표시가 잠깐 나타납니다.
- 채팅에서 확인하세요. AI 답변에 별표 사이의 텍스트가 있으면 별표가 더 이상 보이지 않습니다.
작동하지 않는 경우: Find Pattern (Regex) 아래에 빨간 오류가 있으면 저장할 수 없습니다. 패턴이 잘못됐거나 안전하지 않은 것입니다. 안전성과 성능을 참고하세요.
스크립트 관리하기
Regexes 목록의 각 행에는 스크립트 이름, AI 또는 User 태그, /pattern/flags 형태의 패턴, 켜기/끄기 토글(곧바로 적용됨), 연필 아이콘인 Edit regex(정규식 편집), 휴지통 아이콘인 Delete regex(정규식 삭제)가 표시됩니다. 스크립트가 없으면 목록에 "No regexes yet"이 표시됩니다. 행의 손잡이를 끌어 실행 순서를 바꿀 수 있습니다.
섹션 헤더에는 아이콘 버튼 세 개가 있습니다. Create regex, Import regexes from JSON(JSON에서 정규식 가져오기), Export regexes to JSON(정규식을 JSON으로 내보내기)이며, 마지막 버튼은 전역 스크립트 전체를 파일 하나로 저장합니다. 캐릭터 한 명에게 묶인 스크립트는 따로 보관됩니다. 스크립트를 캐릭터 한 명에게만 적용하기를 참고하세요.
편집기 입력란
Find Pattern (Regex)
검색 패턴입니다. 앞뒤에 슬래시를 붙이지 말고 패턴만 쓰세요. 플레이스홀더에 \([^]+)\* 예시가 나와 있습니다.
Replace With
일치한 부분을 대신할 텍스트입니다. 비워 두면 일치한 부분이 삭제됩니다. $1, $2 같은 방식으로 붙잡은 텍스트를 다시 쓸 수 있습니다. 캡처 앞에는 다음 대소문자 변환을 쓸 수 있습니다.
| 쓰기 | 결과 |
\u$1 | 캡처의 첫 글자를 대문자로 바꿉니다 |
\U$1\E | 캡처 전체를 대문자로 바꿉니다 |
\l$1 | 캡처의 첫 글자를 소문자로 바꿉니다 |
\L$1\E | 캡처 전체를 소문자로 바꿉니다 |
C:\Users 같은 Windows 경로처럼 역슬래시가 들어간 일반 텍스트는 쓴 그대로 유지됩니다.
Regex Flags
패턴이 일치하는 방식을 바꾸는 토글 버튼입니다. 새 스크립트는 g와 i가 켜진 상태로 시작합니다.
| 플래그 | 의미 |
g | 전역(global): 첫 번째뿐 아니라 일치하는 곳을 모두 바꿉니다 |
i | 대소문자 구분 안 함(case-insensitive) |
m | 여러 줄(multiline): ^와 $가 줄바꿈 위치에서도 일치합니다 |
s | dotAll: .이 줄바꿈 문자에도 일치합니다 |
u, y, d | 특수한 경우에 쓰는 Unicode, sticky, match indices |
Trim Strings
바꾸기가 끝난 뒤 제거할 일반 문자열의 목록이며, 선택 사항입니다. Add trim string(제거 문자열 추가)을 클릭하면 행이 추가되고, X 버튼을 클릭하면 행이 지워집니다. 패턴으로 잡기보다 직접 입력하는 편이 쉬운 고정 문구에 쓰세요.
Live Test
예시 텍스트를 붙여 넣으면 Result: 아래에 결과가 나타납니다. Live Test는 찾기, 바꾸기, 제거 동작만 확인합니다. 적용 위치, 켜짐/꺼짐 상태, 캐릭터 범위, 깊이는 실제 채팅에서 평가됩니다. 패턴, 바꿀 텍스트, 제거 문자열에는 {{user}}, {{char}} 같은 매크로를 쓸 수 있습니다. Live Test에서는 예시 값이 쓰입니다. 매크로를 참고하세요.
스크립트가 실행되는 위치 고르기
Apply To
Apply To는 스크립트가 채팅의 어느 쪽을 지켜볼지 정합니다. 최소 하나는 선택해 두세요. 둘 다 고를 수도 있습니다.
- AI Output: AI 답변이 표시되기 전에 실행됩니다.
- User Input: 내 메시지가 전송되기 전에 실행됩니다.
Apply Mode
Apply Mode(적용 모드)는 Advanced Options(고급 옵션) 안에 있습니다. 바꿔 쓰기가 무엇을 바꿀지 정합니다. 새 스크립트는 Only Display로 시작합니다.
- Only Display: 채팅에 보이는 내용을 바꿉니다. 저장된 메시지와 이후 모델이 받는 컨텍스트는 그대로입니다. 답변의 겉모습을 정리할 때 가장 안전합니다.
- Only Prompt: 모델이 받는 내용을 바꾸며, 프롬프트 미리보기에도 이 결과가 표시됩니다. 화면 표시와 저장된 메시지는 그대로입니다. 모델이 자꾸 따라 쓰는 것을 없앨 때 쓰세요.
- Both: 화면 표시와 프롬프트 텍스트를 모두 바꿉니다.
내 메시지의 경우, Only Display나 Both로 설정한 User Input 스크립트는 메시지를 보내기 직전에 바꿔 씁니다. 보이는 모양만이 아니라 저장되고 전송되는 메시지 자체가 바뀝니다. 보내는 메시지에는 화면 표시만 바꾸는 방식이 없습니다.
실행 순서와 깊이 범위
두 설정 모두 Advanced Options 안에 있습니다.
- Execution Order(실행 순서)는 숫자입니다. 숫자가 작을수록 먼저 실행되며, 여러 스크립트가 같은 텍스트에 일치할 수 있을 때 중요합니다. 새 스크립트는 0에서 시작하고, 저장할 때 앱이 비어 있는 다음 번호를 지정합니다. Regexes 목록에서 행을 끌어 순서를 바꿀 수도 있습니다.
- Depth Range(깊이 범위)는 Min(최소)과 Max(최대)로 스크립트가 얼마나 이전 메시지까지 실행될지 제한합니다. 최신 메시지가 깊이 0, 그 앞 메시지가 깊이 1, 이런 식입니다. 둘 다 비워 두면 깊이와 상관없이 실행됩니다. Min이 Max보다 크면 저장이 막힙니다.
그룹 채팅
이 내용은 Individual(개별) 그룹 모드를 쓰는 Roleplay(롤플레이) 채팅에서 Only Prompt와 Both에 적용됩니다.
- 적용 위치는 프롬프트를 받는 캐릭터를 기준으로 정해집니다.
- 내 메시지와 다른 캐릭터의 메시지는 User Input으로 취급됩니다.
- 응답하는 캐릭터 자신의 답변은 같은 그룹 턴의 앞선 답변을 포함해 AI Output으로 취급됩니다.
- 캐릭터 제한은 여전히 바꿔 쓴 프롬프트를 누가 받을지 결정합니다. 생각을 숨기는 스크립트에서 제외된 내레이터는 원래 생각을 그대로 유지합니다.
스크립트를 캐릭터 한 명에게만 적용하기
스크립트를 모든 곳에서 실행하는 대신 특정 캐릭터에게 묶을 수 있습니다. 방법은 두 가지입니다.
- 편집기에서: Apply To 카드의 Specific Characters(특정 캐릭터)를 켜고 캐릭터를 한 명 이상 고르세요. 토글이 꺼져 있으면 스크립트는 "Applies to all characters" 상태입니다. 켰다면 캐릭터를 최소 한 명은 고르세요.
- 캐릭터에서: 캐릭터를 열고 Advanced(고급) 탭으로 가서 Regex Scripts(정규식 스크립트) 카드를 찾으세요. 이 카드에는 그 캐릭터의 스크립트만 나오며, 카드 자체에 Create regex, 가져오기, 내보내기 버튼이 있습니다. 캐릭터를 먼저 저장하세요. 저장하지 않으면 카드에 아직 스크립트를 추가할 수 없다고 표시됩니다.
이 카드에서 전체 편집기를 열면 Character Editor를 벗어납니다. 캐릭터에 저장하지 않은 변경 사항이 있으면 앱이 먼저 경고합니다.
채팅별 Scoped Regex Scripts 설정
캐릭터 범위 스크립트는 모든 채팅에서 저절로 실행되지 않습니다. 채팅별 설정으로 제어합니다. Chat Settings(채팅 설정)를 여세요. Scoped Regex Scripts(범위 지정 정규식 스크립트) 섹션은 그 채팅의 캐릭터 중 하나라도 범위 스크립트를 가지고 있을 때만 나타납니다.
| 방식 | 동작 |
| Disabled(기본값) | 범위 스크립트가 꺼집니다. 전역 스크립트만 실행됩니다. |
| Exclusive(단독) | 각 범위 스크립트가 자신이 속한 캐릭터의 메시지만 바꿉니다. |
| Chat(채팅) | 모든 범위 스크립트가 채팅의 모든 메시지를 바꿉니다. |
Use preset default(프리셋 기본값 사용)는 프롬프트 프리셋의 Scoped regex default(범위 정규식 기본값)를 따릅니다. 방식을 고르면 이 채팅에서는 고른 방식이 우선합니다. 새 채팅을 특정 방식으로 시작하려면 다음 중 하나를 쓰세요.
- 그 방식을 프리셋 기본값으로 지정하세요.
- 기본 설정 프로필에 저장하세요.
- 방식을 고른 다음 Reset View(보기 초기화) 옆의 즐겨찾는 배치 별을 클릭하세요(새 채팅의 배치 고르기 참고).
방식 아래에는 캐릭터별 범위 스크립트가 각각의 스위치와 함께 나열됩니다. 이 스위치는 스크립트 자체의 설정이므로, 바꾸면 모든 채팅에서 그 스크립트가 바뀝니다. 방식이 제어하는 것은 화면 표시 쪽 스크립트입니다. 프롬프트 쪽 스크립트는 항상 답변을 생성하는 캐릭터를 따릅니다.
스크립트 가져오기와 교체하기
SillyTavern에서 가져오기
Marinara는 SillyTavern 캐릭터 카드에 함께 들어 있는 정규식 스크립트를 읽습니다. 카드를 가져오면 Imported regex scripts(가져온 정규식 스크립트) 섹션에 선택지 두 개가 나옵니다.
- Character only(기본값): 스크립트가 그 캐릭터에게만 묶인 채로 남습니다.
- Global: 스크립트가 Presets에 추가되어 모든 채팅에서 실행됩니다.
이 선택지는 캐릭터 하나를 가져오는 대화 상자와, 여러 개를 한꺼번에 가져오는 Import from SillyTavern Folder(SillyTavern 폴더에서 가져오기) 과정에 나타납니다. 패턴이 비어 있거나 안전성 검사를 통과하지 못한 스크립트는 건너뜁니다. 스크립트만 담긴 일반 JSON 파일을 가져오려면 Regexes에서 Import regexes from JSON을 쓰세요. SillyTavern에서 가져오기를 참고하세요.
정규식 팩 교체하기
- Presets → Regexes(프리셋 → 정규식)에서 Select regex scripts(정규식 스크립트 선택)를 고르세요.
- 이전 팩의 항목을 체크하거나 Select all regex scripts(모든 정규식 스크립트 선택)를 고르세요.
- 작업 바에서 Export(내보내기) 또는 Delete(삭제)를 쓰세요. 삭제는 한 번 확인을 거치며 되돌릴 수 없습니다.
- 업데이트된 팩을 가져오세요.
삭제에 실패한 항목은 다시 시도할 수 있도록 선택된 상태로 남습니다. 선택하지 않은 스크립트는 그대로 유지됩니다. 프리셋 연결은 정규식 편집기에서 계속 설정할 수 있습니다.
안전성과 성능
모든 패턴은 저장하거나 실행하기 전에 검사를 거칩니다. 실행이 느려져 앱을 멈추게 할 가능성이 큰 패턴은 다음 메시지와 함께 차단되며, 고칠 때까지 저장할 수 없습니다.
Regex pattern is unsafe: avoid nested quantifiers, ambiguous quantified alternatives, and oversized patterns.이 메시지가 보이면 패턴을 더 짧고 단순하게 만드세요. 다음 형태는 피하세요.
- 1000자가 넘는 패턴.
(a+)+처럼 반복 그룹 안에 반복 그룹이 또 들어간 형태...나\s\w처럼 넓은 와일드카드가 연달아 나오는 형태. 넓은 와일드카드란.,\s,\w+처럼 길이 제한 없이 텍스트를 잡아낼 수 있는 토큰입니다.- 한 패턴 안에 넓은 와일드카드가 3개 이상 있는 형태. 사이에 다른 텍스트가 있어도 마찬가지입니다.
a+나 (a+) 같은 단일 반복, 또는 .* 하나 같은 넓은 와일드카드 하나는 괜찮습니다.
안전한 패턴이라도 긴 메시지에서는 바꾸기 한 번마다 시간 제한이 있습니다. 어떤 스크립트가 한 메시지에서 너무 오래 걸리면, 앱은 그 메시지에 한해서만 해당 스크립트를 건너뜁니다. 스크립트는 켜진 채로 남아 다음 메시지에서 다시 시도합니다. 새 패턴은 먼저 Live Test에서 짧은 예시 텍스트로 시험하세요.
관련 가이드
- 매크로
- 캐릭터 만들기와 편집
- SillyTavern에서 가져오기