2016-06-21 149 views
1

是否有一种方法只打印匹配的字符串直至匹配?在Perl模式匹配中,打印匹配的字符串直至匹配

use strict; 
use warnings; 

my $match_re = qr/\QCopyright (c) \E(\d .*) \Q by Bill Shakespeare.\E/xi; 

my $str = 'Copyright (c) 2008,2009-2011 by Wordsworth'; 

if ($str =~ $match_re) { 
    print "\ncomplete match\n"; 
} else { 
    print "\npartial match: \n"; 
} 

在这个例子中,我想打印partial match: Copyright (c) 2008,2009-2011 by因为它匹配了这一点。

+0

因此,如果'$ str'是'Copyright(foo)',那么您只需要打印版权('? – ThisSuitIsBlackNot

+0

@ThisSuitIsBlackNot,是的 – rodee

+0

根据版本,'$ {^ PREMATCH }' – stevieb

回答

0

假设一个标准中文提供处理条目(桶)开始

$string ='\bibitem{bibtex_key} rest'; 

可以使用下面的行提取两个部分:

my ($bibtex_key, $rest) = $string =~ m/\\bibitem\{(.*)\}(.*)/; 

现在你可以很容易地适应您的需求: )