4
나는 CPL 모듈과 Regexp::Grammars
CPAN 모듈을 사용하여 프로그램의 주석에서 무료 태그를 캡처하려고합니다.Regexp :: 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
내가 대신 입력 데이터에서 모든 태그를 일치시킬 수 있습니다 어떻게
?
---
Tagger:
- tag: tag1
matchline: 3
- tag: tag2
matchline: 5