我正在解析一个简单模式的多次重复文本。文本采用剧本的格式,如下所示:
SAMPSON
I mean, an we be in choler, we'll draw.
GREGORY
Ay, while you live, draw your neck out o' the collar.
我目前正在使用 pattern ([A-Z0-9\s]+)\s*\:?\s*[\r\n](.+)[\r\n]{2}
,它可以正常工作(下面的解释),除非角色的语音中有换行符。发生这种情况时,角色的名字被成功捕获,但只捕获语音的第一行。
打开单行模式(包括换行符.
)只会创建一个巨大的匹配。
当它找到下一个字符名称并结束匹配时,我如何告诉(.+)
它停止?
我正在单独迭代每个匹配项(JavaScript),因此该名称必须可用于下一个匹配项。
理想情况下,我将能够匹配所有字符,直到整个模式被重复。
模式解释:
第一组匹配一个字符的名称(允许大写字母、数字和空格),(尾随冒号和空格可选)。
第二组(角色的讲话)从一个新行开始并捕获任何字符(有问题的是,换行符和它们之后的字符除外)。
模式在空行之后结束(并重新开始)。