正規表現で字幕を置換
字幕テキストを貼り付けることもできます
オプション
正規表現で、各字幕のテキストに対して一致を調べます。一致した箇所はすべて置換されます。この節の2つのページは同じ欄を共有します。一方は手持ちのパターンを入れるために空で開き、もう一方はどちらにも編集できるパターンを最初から入れておきます。
一致した箇所を何に置き換えるかです。空にすると一致箇所をすべて削除します。文字どおりの検索置換のページと違い、ここではドル記号が特別な意味を持ちます。$1 は一致の1つ目のかっこグループ、$& は一致全体、$$ はドル記号そのものを表します。
パターンをコンパイルするときに付ける文字です。既定では g と u がオンです。u はテキストをコード単位ではなく1文字ずつ読むようにし、\p{L} などが意図どおりに機能します。i を足すと大文字小文字を無視し、m は行頭・行末のアンカー、s はドットが改行にも一致するようにします。欄を空にするとフラグなしでコンパイルします。それ以外の文字は無視せずエラーにします。指定していないフラグで動くパターンは、静かに別の意味になるからです。
タイミングを数える基準のフレームレートです。形式のページでは MicroDVD が必要とする値で、同形式は時間をフレーム番号で保存します。フレームレートのページでは、そのファイルがどのレートを前提に作られたか(字幕が合わせて作られた版)を指し、ページの2つ目の欄には実際に使う動画のレートを入れます。よく使われるのは 23.976、24、25、29.97、30、50、59.94、60 です。間違えると時間軸全体がずれます。フレームレートのページでは、ずれは固定量ではなく比率で生じます。
実行するには パターン を入力してください。
このページは、あなたが書いたパターンで字幕の中のテキストを書き換えます。パターンは固定の文字列ではありません。`\d+` は数字の連なり、`(cat|dog)` はどちらかの語、ドットは任意の 1 文字を意味します。すべての字幕のすべての一致が 1 回で置き換えられ、ページが変更された箇所の数を報告します。動くのはテキストだけで、開始と終了の時刻はすべてそのまま引き継がれます。
置換の枠も固定の文字列ではありません。中のドル記号は特別です。`$1` は一致の最初の括弧グループが捕まえたもの、`$&` は一致全体、`$$` は文字としてのドル記号を表します。1 つの規則で何千もの異なる行を整えられるのはそのおかげです。句読点の前の余分な空白を削除しつつ句読点を保てるのは、句読点をグループが捕まえているからです。
パターンは `g` と `u` を付けて動きます。`g` は最初の 1 つだけでなくすべての一致を探すという意味で、`u` はテキストをコード単位ではなく 1 文字ずつ読ませ、`\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` が戻します。3 つの一致、3 つの変更です。リテラルの検索ではこれをまったく表せません。1 つの固定文字列を別の固定文字列にすることしかできません。
1 つのパターンで 2 つのつづり
入力
The Colour of the sky.
colourless and calm.
出力
The color of the sky.
colorless and calm.
フラグの枠に `i` があると、colour は大文字で始まるつづりも捕まえます。フラグがしないことに注意してください。行頭の大文字は消えます。パターンは語が文中で何をしているかを知らないからです。大文字が大事なら 2 つ目の規則です。
斜体の範囲の境界をまたぐ一致
入力
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 つ目のグループは `$2` です。パターン `\s+([.,!?])` と置換 `$1` は空白を削除して句読点を残し、固定文字列にはできない仕事そのものです。`$&` は一致全体、`$$` はテキストに本当に欲しいドル記号を表します。
パターンはどのフラグで動きますか?
`g` と `u` が既定でオンです。`g` は最初で止まらずすべての一致を探し、`u` はテキストを 1 文字ずつ読ませ、`\p{L}` や `\p{N}` を言うとおりの意味にします。`i` で大文字小文字を無視、`m` でアンカーを行ごとに、`s` でドットを改行に一致させます。枠を空にするとフラグなしで動きます。ほかの文字(`x`、`y`、`d` など)は無視されず、実行が拒否されます。
これは検索と置換のページと同じですか?
違います。違いは枠に何を打つかです。あちらは書いたとおりの文字に一致するので、起きうる失敗は何も見つからないことだけです。こちらはプログラムを動かすので、1 回で何千箇所にも一致し、すべてを書き換えられます。パターンがここでは空から始まる理由、未知のフラグが拒否される理由、2 つのページが別である理由がそこにあります。片方では起きなかった書き換えは打ち間違いで、もう片方では黙って別の意味になったパターンかもしれません。
2 つの一致が重なるときはどうなりますか?
最も左のものが勝ち、その後に走査が続きます。どの正規表現エンジンもそうします。そのため `aa` を `aaaa` に当てると 3 つではなく 2 つが見つかり、置換後のテキストは `bb` になります。3 つを期待していたなら、そのパターンはエンジンにできないことを書いていて、ファイルが戻る前に知ったほうがよいということです。
遅いパターンから守ってくれますか?
ある一族は何かが動く前に拒否します。すでに上限なしで繰り返すグループに繰り返しを付けたもの、たとえば `(a+)+` や `(\d+)+` です。ブラウザのタブを固めるパターンで、入力は 30 文字で足ります。捕まらない形が 3 つあり、手で避ける価値があります。繰り返すグループの中に重なる選択肢(`(a|a)+`)、重なる繰り返しが並ぶもの(`a*a*a*b`)、巨大な回数(`(a{100}){100}`)です。時計による検査はしません。時間制限があると同じファイルが速いマシンと遅いマシンで違う結果になるからです。
テキストを書き換えると斜体などのスタイルはどうなりますか?
編集の外にあるタグはテキストと一緒にずれ、編集を含むタグは合わせて伸び縮みします。一致がタグの境界をまたぐと正しい置き場所が残らないので外され、損失レポートがいくつ外したかを告げます。カラオケのタイミングは一致が触れた時点で外されます。音節ごとの分割が単語と合わなくなるからです。
どの字幕形式でも使えますか?
使えます。パターンは各字幕のテキストに適用され、12 形式すべてがそのテキストを持っているので、SRT、WebVTT、スタイル付きの ASS、LRC の歌詞、プレーンテキストの文字起こしが同じように動きます。各ファイルは入ってきた形式で書き戻され、MicroDVD のフレーム番号はパネルのフレームレートを使います。