Я пытаюсь захватить бесплатные теги из комментариев в программе с помощью Perl и модуля CPAN Regexp::Grammars
.Разбор тегов из файла с регулярным выражением :: Grammars
use strict;
use v5.10;
use YAML;
my $s = q{
junk code;
// here be tags #:tag1:
junk code 2;
// another one #:tag2:
junk ...;
};
my $rg = do {
use Regexp::Grammars;
qr{
<nocontext: >
^.* <Tagger> .* $
<rule: Tagger> <[MATCH=single_tag]> +
<token: single_tag> \#\:<tag>\:
<token: tag> <matchline> \w+
}xms;
};
if($s =~ $rg) {
say Dump(\%/);
} else {
say 'no match';
}
Но выход показывает YAML я только захватывая последний тег:
---
Tagger:
- tag:
matchline: 5
Как я могу соответствовать все теги входных данных вместо?
И ... как я могу получить строку тега соответствует без включения шумных контекстных строк (снимающих nocontext:
директиву), так что конечный результат несколько более читаемым, то есть:
---
Tagger:
- tag: tag1
matchline: 3
- tag: tag2
matchline: 5