我是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;
我只匹配本节的第一行,但我想捕获所有文本,直到空白行或输入结尾。谁能看到我在做什么错?
最佳答案
一种解决方案是如下更改<text>
:
<token: text> (?:(?!\n\n).)*
这将匹配0个或多个不是换行符的字符,然后再跟另一个换行符。这可能不是最好的解决方案,但它可以工作。
关于regex - 如何使用Regexp::Grammars匹配多行模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484813/