L******r 发帖数: 199 | 1 对下列文本逐行处理,
主要目标是把 括号里包含有NN/JJ/NNS/VP的短语提取出来,存到一个数组里。
比如这行"(NP (JJ extreme) (NN fire) (NN threat)))"
要求处理后的数组为
@array==("(JJ extreme)","(NN fire)","(NN threat)")
我用
my $content_ALL = '.*(\(NNPS\s.+\)|\(NNP\s.+\)|\(NNS\s.+\)|\(NN\s.+\)|\(JJR\
s.+\)|\(JJS\s.+\)|\(JJ\s.+\)|\(VBZ\s.+\)|\(VBD\s.+\)|\(VBG\s.+\)|\(VBN\s.+\)
|\(VBP\s.+\)|\(VB\s.+\)|\(RBS\s.+\)|\(RBR\s.+\)|\(RB\s.+\))';
my @myp = $line =~/$content_ALL/g;
可是根本得不到要的效果。
谁给个方子?谢谢
(ROOT
(S
(NP
(NP (NNS Scores))
(PP (IN of)
|
w******p 发帖数: 166 | 2 this should work:
test.pl:
my $input = '(NP (JJ extreme) (NN fire) (NN threat)))';
my @result = $input =~ /(\(JJ[^)]*\))|(\(NN[^)]*\))/g;
map { print "$_\n" if $_ } @result;
$ perl test.pl
(JJ extreme)
(NN fire)
(NN threat) |
L******r 发帖数: 199 | 3 thanks.
【在 w******p 的大作中提到】![](/moin_static193/solenoid/img/up.png) : this should work: : test.pl: : my $input = '(NP (JJ extreme) (NN fire) (NN threat)))'; : my @result = $input =~ /(\(JJ[^)]*\))|(\(NN[^)]*\))/g; : map { print "$_\n" if $_ } @result; : $ perl test.pl : (JJ extreme) : (NN fire) : (NN threat)
|