単純なパターンを何度も繰り返したテキストを解析しています。テキストは、次のような芝居の台本形式です。
SAMPSON
I mean, an we be in choler, we'll draw.
GREGORY
Ay, while you live, draw your neck out o' the collar.
私は現在([A-Z0-9\s]+)\s*\:?\s*[\r\n](.+)[\r\n]{2}
、文字のスピーチに改行が含まれている場合を除いて、正常に動作する pattern を使用しています (以下の説明)。その場合、キャラクターの名前は正常にキャプチャされますが、スピーチの最初の行だけがキャプチャされます。
単一行モードをオンにすると (改行を に含めるため.
)、巨大な一致が 1 つだけ作成されます。
(.+)
次のキャラクター名が見つかったときに停止して試合を終了するように指示するにはどうすればよいですか?
各一致を個別に (JavaScript) 反復処理しているため、名前は次の一致で使用できる必要があります。
理想的には、パターン全体が繰り返されるまで、すべての文字を一致させることができます。
パターンの説明:
最初のグループは、文字の名前 (大文字、数字、および空白を使用できます) と一致します (末尾のコロンと空白はオプションです)。
2 番目のグループ (キャラクターのスピーチ) は新しい行で始まり、任意の文字をキャプチャします (ただし、問題のある改行とその後の文字は除きます)。
パターンは、空白行の後で終了 (および最初から開始) します。