我是Regexp :: Grammars的新手,我在匹配多线模式时遇到了麻烦。我有这个输入:
my $text = <<EOD;
HEADER:
This is a multi-line section, because the
second line is down here.
EOD
和这个语法:
use Regexp::Grammars;
my $parser = qr{
<nocontext:>
<doc>
<rule: doc> <[section]>+
<rule: section> <label> : <text> (\n\n | $)
<token: label> [A-Z0-9_&/ -]+
<token: text> [^\n]*
}xms;
我只匹配该部分的第一行,但我想将所有文本捕获到空白行或输入结束。谁能看到我做错了什么?
答案 0 :(得分:1)
一种解决方案是按如下方式更改<text>
:
<token: text> (?:(?!\n\n).)*
这匹配0个或更多不是换行符后跟另一个换行符的字符。它可能不是最好的解决方案,但它确实有效。