0

字幕ファイルのフォーマットが正しいことを確認しています。私が探している3つの一般的なエラーがあります。

  1. "[00:01:22:00]" 形式のタイムスタンプ - 一致する ] が忘れられることがあります。したがって、行に「[」が発生した場合、上記の形式の正確に 11 文字と、一致する「]」があることを確認したい一般的なエラーは、一致する ] がないことです。
  2. 太字と斜体 - 行に ^B または ^I が出現する場合、同じ行に対応する ^B または ^I がなければなりません。
  3. ^ が行に現れる場合、その後に I または B を続ける必要があります。
4

1 に答える 1

1

これらすべてを行う正規表現:

^(.*\[(?![0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\]).*|.*\^(?![BI]).*|([^\^\n]*\^[^B\n])*[^\^\n]*\^B([^\^\n]*\^[^B\n])*[^\^\n]*|([^\^\n]*\^[^I\n])*[^\^\n]*\^I([^\^\n]*\^[^I\n])*[^\^\n]*)$

正規表現対応のテキスト エディターの検索バーにそれを入力するだけで、質問で定義されているエラー行が検出されます。

Notepad++ (Windows) と TextWrangler (Mac) の両方の検索機能を使用してテストしました。Python や、否定先読みをサポートするその他の正規表現でも動作するはずです。検索するときは、「正規表現」または「grep」の横にあるチェックボックスまたは円がチェックされていることを確認してください。grep はルックアラウンドをサポートしていないため、この正規表現はLinux grep では機能しないことに注意してください。

確かにきれいではありませんが、実際には のように一緒にプッシュされた 4 つの小さな正規表現^(rule1|rule2|rule3B|rule3I)$です。

最初のルールは次のとおりです。

^.*\[(?![0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\]).*$

[00:00:00:00] パターンの一部ではない "[" を含むすべての行に一致し、否定先読みを使用します。

2 番目のルールは次のとおりです。

^.*\^(?![BI]).*$

これは、"^" の直後に B または I が続かない任意の行に一致します。これも否定先読みを使用して、行末にも一致するようにします。

3 番目のルールはお決まりのルールです。

^([^\^\n]*\^[^B\n])*[^\^\n]*\^B([^\^\n]*\^[^B\n])*[^\^\n]*$

^Bこれは、太字に使用されるリテラルのインスタンスが 1 つだけある任意の行に一致します。その([^\^\n]*\^[^B\n])*[^\^\n]*部分は ではないものすべてに一致し^B、その\^B部分は 一致し^Bます。\nnotepad ++での複数行の一致を防ぐために含めました。\ngrep を使用している場合、または行ごとの正規表現検索を既に実行しているプログラムを使用している場合は、's を削除できます。

4 番目のルールは、「B」の代わりに「I」を使用した 3 番目のルールです。

于 2013-10-19T07:55:40.893 に答える