1

正規表現を使用して、SRT ファイルのデータを配列として取得する必要があります。

これまでの私のコードは次のとおりです。

Javascript:

function readSrt() {
  var srtUrl = 'assets/media/subtitles.srt';

  $.get(srtUrl, function(data) {
    console.log("SRT:", data); // it reads ok

    var regexp = /(.*)\n(.*),\d\d\d --> (.*)\n(.*)/g; // this regex doesn't work

    console.log("SUBS:", data.match(regexp)); // outputs null
  });
}

字幕.srt:

0
00:00:00,000 --> 00:00:01,000
Instructor…All right, let's start off

1
00:00:01,000 --> 00:00:04,000
here. We were, I think, wrapping up kind

...

14
00:00:40,000 --> 00:00:42,000
mound, basically.

15
00:00:42,000 --> 00:00:44,000
If you go to Colossae today, none of it

...

取得する必要があります:

1.  0
2.  00:00:00
3.  00:00:01,000
4.  Instructor…All right, let's start off

regex101.comでいくつかの試行を行いましたが、PHP でのみうまく機能し、javascript ではうまく機能しないようです。

私は何を間違っていますか、どうすれば修正できますか?

4

3 に答える 3

1

正規表現で間違っている可能性があることの 1 つは、.*貪欲であることです。最初のキャプションで一致が開始され、最後のキャプションでのみ一致が終了します。毎回できるだけ一致しないように、怠惰な代替手段に置き換えてみてください。

/(.*?)\n(.*?),\d\d\d --> (.*?)\n(.*?)\n/
于 2014-08-22T17:18:49.180 に答える
0

ワイルドカード文字に頼って(そしておそらく.も) キャッチしますが、これは実行されません (その情報についてはhttp://www.regular-expressions.info/javascript.htmlを参照してください。 /s修飾子"ビット)。より大きな利益を得るために、代わりに明示的なグループを使用してください。代わりに「何でも、次に改行」、「コンマの前の何か」などに使用してください。\n\r[^\n]+\n[^,]+,

于 2014-08-22T17:19:08.093 に答える