본문으로 바로 가기
SubtitleMatrix

정규식으로 자막 바꾸기

텍스트정규식으로 바꾸기
또는 자막 텍스트를 붙여넣으세요

옵션

정규식이며 각 자막 블록의 텍스트와 대조합니다. 일치하는 곳마다 바뀝니다. 이 갈래의 두 페이지가 이 상자를 함께 씁니다. 하나는 이미 가진 패턴을 넣도록 비어 있고, 다른 하나는 양쪽으로 고칠 수 있는 패턴을 미리 채워 둡니다.

일치한 곳이 각각 무엇이 될지입니다. 비워 두면 일치하는 곳을 모두 지웁니다. 글자 그대로 찾기·바꾸기 페이지와 달리 여기서는 달러 기호에 특별한 뜻이 있습니다. $1은 일치한 것의 첫 번째 괄호 묶음, $&는 일치한 전체, $$는 달러 기호 자체를 뜻합니다.

패턴을 컴파일할 때 쓰는 문자들입니다. g와 u가 기본으로 켜져 있습니다. u는 패턴이 텍스트를 코드 단위가 아니라 글자 단위로 읽게 해 주고, \p{L} 같은 표기가 뜻대로 동작하게 만드는 것이 바로 이것입니다. i를 더하면 대소문자를 무시하고, m은 줄 기준 앵커, s는 점이 줄 바꿈까지 맞추게 합니다. 상자를 비우면 플래그 없이 컴파일합니다. 다른 문자는 무시하지 않고 거부합니다. 요청하지 않은 플래그로 도는 패턴은 조용히 다른 뜻이 되는 패턴이기 때문입니다.

타이밍을 어떤 프레임 레이트 기준으로 세는지 정합니다. 형식 안내 페이지에서는 MicroDVD가 이 값을 필요로 합니다. 시간을 프레임 번호로 저장하기 때문입니다. 프레임 레이트 페이지에서는 이 파일이 어느 프레임 레이트를 기준으로 만들어졌는지, 즉 자막을 만든 판본의 값을 뜻하며, 페이지의 두 번째 상자에는 이 자막을 사용할 영상의 프레임 레이트를 넣습니다. 흔히 쓰는 값은 23.976, 24, 25, 29.97, 30, 50, 59.94, 60입니다. 잘못 넣으면 시간축 전체가 어긋나고, 프레임 레이트 페이지에서는 고정된 양이 아니라 비율로 어긋납니다.

실행하려면 패턴 항목을 채우세요.

이 페이지는 직접 쓴 패턴으로 자막 큐 안의 텍스트를 다시 씁니다. 패턴은 고정된 문자열이 아닙니다. `\d+`는 숫자가 이어지는 아무 구간, `(cat|dog)`은 둘 중 아무 단어, 마침표는 아무 글자 하나를 뜻합니다. 모든 큐의 모든 일치가 한 번에 바뀌고, 페이지가 몇 군데가 바뀌었는지 보고합니다. 움직이는 것은 텍스트뿐이며 모든 시작·끝 시각은 있던 그대로 전달됩니다.

바꿀 글자 상자도 고정 문자열이 아닙니다. 그 안의 달러 기호는 특별합니다. `$1`은 일치의 첫 번째 괄호 묶음이 잡은 것, `$&`는 일치 전체, `$$`는 실제 달러 기호를 뜻합니다. 규칙 하나로 수천 개의 서로 다른 줄을 정리할 수 있는 이유입니다. 마침표 앞의 떠도는 공백을 지우면서 문장부호는 남기는 것도 문장부호를 괄호 묶음이 잡았기 때문입니다.

패턴은 `g`와 `u`를 켜고 실행됩니다. `g`는 첫 번째만이 아니라 모든 일치를 찾고, `u`는 텍스트를 코드 단위가 아니라 글자 단위로 읽어 `\p{L}`이 글자를 뜻하게 합니다. `i`를 더하면 대소문자를 무시하고, `m`은 앵커가 줄마다 동작하게 하며, `s`는 마침표가 줄 바꿈도 맞추게 합니다. 플래그 상자를 비우면 아무 플래그 없이 실행됩니다. 다른 글자는 무시되지 않고 실행 전체를 거부합니다. 요청하지 않은 플래그로 도는 패턴은 조용히 다른 뜻이 되는 패턴이기 때문입니다.

인라인 서식은 놓일 정직한 자리가 있을 때마다 함께 갑니다. 편집이 태그 밖에서 일어나면 태그가 옮겨지고 안에서 일어나면 늘어납니다. 일치가 태그 경계를 가로지르면 마크업을 버리고 손실 보고서에 세어집니다. 대안은 엉뚱한 단어를 감싼 이탤릭이기 때문입니다. 업로드는 없고 각 파일은 자기 형식으로 다시 쓰이며, 시즌 전체를 대기열에 한꺼번에 넣을 수 있습니다.

예시

캡처 그룹으로 문장부호 지키기

입력

1
00:00:01,000 --> 00:00:02,000
We stopped , and waited .

2
00:00:03,000 --> 00:00:04,000
Right !

결과물

1
00:00:01,000 --> 00:00:02,000
We stopped, and waited.

2
00:00:03,000 --> 00:00:04,000
Right!

패턴은 공백이 이어진 뒤 . , ! ? 가운데 하나가 오는 것이고, 괄호가 그 문장부호를 첫 번째 그룹으로 만들어 `$1`이 그것을 되돌려 놓습니다. 세 번 일치, 세 번 변경입니다. 문자 그대로의 검색은 이것을 표현할 수 없습니다. 고정 문자열 하나를 다른 고정 문자열로 바꿀 수 있을 뿐입니다.

패턴 하나로 두 가지 철자

입력

The Colour of the sky.
colourless and calm.

결과물

The color of the sky.
colorless and calm.

플래그 상자에 `i`가 있으면 `colour`가 대문자 철자도 잡습니다. 플래그가 하지 않는 일도 보세요. 줄을 시작하던 대문자가 사라졌습니다. 패턴은 단어가 문장에서 무슨 일을 하는지 모르기 때문입니다. 대문자가 중요하다면 두 번째 규칙이 필요합니다.

이탤릭 구간의 경계를 가로지르는 일치

입력

1
00:00:01,000 --> 00:00:04,000
<i>Hello there</i>, welcome aboard

결과물

1
00:00:01,000 --> 00:00:04,000
Hello there. Welcome aboard

일치가 이탤릭 안에서 시작해 밖에서 끝나므로 마크업이 덮던 것의 절반이 사라지고 놓일 올바른 자리가 없습니다. 엉뚱한 글자를 감싼 채 두는 대신 버리고 세어 둡니다.

자주 묻는 질문

패턴이 맞춘 일부를 유지하려면 어떻게 하나요?

그 부분을 패턴에서 괄호로 감싸고 바꿀 글자에서 `$1`로 가리키면 됩니다. 두 번째 그룹은 `$2` 식입니다. 패턴 `\s+([.,!?])`에 바꿀 글자 `$1`을 쓰면 공백을 지우고 문장부호를 남기며, 고정 문자열이 할 수 없는 바로 그 일입니다. `$&`는 일치 전체, `$$`는 텍스트에 실제로 넣고 싶은 달러 기호입니다.

패턴은 어떤 플래그로 실행되나요?

기본으로 `g`와 `u`가 켜집니다. `g`는 첫 번째에서 멈추지 않고 모든 일치를 찾고, `u`는 텍스트를 글자 단위로 읽어 `\p{L}`, `\p{N}` 같은 것이 말한 뜻대로 동작하게 합니다. 대소문자 무시에는 `i`, 앵커를 줄마다 적용하려면 `m`, 마침표가 줄 바꿈도 맞추게 하려면 `s`를 더합니다. 상자를 비우면 플래그 없이 실행됩니다. `x`, `y`, `d` 같은 다른 글자는 무시되지 않고 실행을 거부합니다.

찾기와 바꾸기 페이지와 같은 작업인가요?

아니요, 차이는 상자에 무엇을 입력하는지입니다. 그 페이지는 글자를 쓴 그대로 맞추므로 잘못될 수 있는 일은 아무것도 찾지 못하는 것뿐입니다. 이 페이지는 프로그램을 돌리므로 한 번에 수천 군데를 맞추고 모두 다시 쓸 수 있습니다. 패턴이 여기서 빈 채로 시작하고, 모르는 플래그를 거부하고, 두 페이지가 따로 있는 이유입니다. 한쪽에서 일어나지 않은 재작성은 오타이고, 다른 쪽에서는 조용히 다른 뜻이 된 패턴일 수 있습니다.

두 일치가 겹치면 어떻게 되나요?

가장 왼쪽 것이 이기고 그 뒤에서 검색이 이어집니다. 모든 정규식 엔진의 동작입니다. 그래서 `aaaa`에 `aa`를 맞추면 세 번이 아니라 두 번 찾고, 바꾸면 텍스트는 `bb`가 됩니다. 세 번을 기대했다면 패턴이 엔진이 할 수 없는 것을 설명하고 있는 것이며, 파일이 돌아오기 전에 아는 편이 좋습니다.

느린 패턴으로부터 페이지가 보호해 주나요?

한 부류는 실행 전에 거부합니다. 이미 끝없이 반복하는 그룹에 반복을 다시 거는 `(a+)+`나 `(\d+)+` 같은 것입니다. 브라우저 탭을 잠그는 패턴이고 입력 서른 글자면 충분합니다. 잡지 못하는 세 모양은 손으로 피해야 합니다. 반복 그룹 안의 겹치는 두 대안 `(a|a)+`, 나란히 놓인 여러 겹침 반복 `a*a*a*b`, 거대한 횟수 `(a{100}){100}`입니다. 시계로 검사하지는 않습니다. 시간 제한을 두면 같은 파일이 빠른 기계와 느린 기계에서 다르게 나오기 때문입니다.

텍스트를 다시 쓰면 이탤릭 같은 서식은 어떻게 되나요?

편집 밖의 태그는 텍스트와 함께 옮겨지고, 편집을 담은 태그는 그에 맞게 늘어나거나 줄어듭니다. 일치가 태그 경계를 가로지르면 마크업이 놓일 올바른 자리가 없으므로 버려지고 손실 보고서가 몇 개를 버렸는지 알려 줍니다. 노래방 타이밍은 일치가 닿으면 버려집니다. 음절별 분할이 더 이상 단어와 맞지 않기 때문입니다.

아무 자막 형식에나 쓸 수 있나요?

네. 패턴은 각 큐의 텍스트에 적용되고 열두 형식 모두 그 텍스트를 읽어 내므로 SRT, WebVTT, 스타일이 있는 ASS, LRC 가사 시트, 일반 전사문이 모두 같은 방식으로 동작합니다. 각 파일은 들어온 형식으로 다시 쓰이고, MicroDVD 파일의 프레임 번호는 패널의 프레임 레이트를 씁니다.

관련 도구