获取模式中的上一个单词

时间:2013-06-20 13:01:52

标签: regex perl lookahead

我有一个场景来从Perl中的字符串中获取前一个单词。例如

$str = "there are lot of apples <xref id=1> and " .
       "a lot of oranges <xref id=2> as blah blah";

我需要在每个<xref(.*?)>

之前获取上一个单词(上面的'apples'和'oranges')

1 个答案:

答案 0 :(得分:2)

my $str = "there are lot of apples <xref id=1> and lot of oranges <xref id=2> as blah blah";

for my $substr ( $str =~ m{(\w+)(?= <xref id)}g ) {
    print "- $substr\n";
}

关键是(?=...)部分。

但是 - 你实际上不需要断言。正如马萨建议的那样,你可以使用正常的正则表达式:

for my $substr ( $str =~ m{(\w+)\s+<xhref id}g ) {

它会同样好用(除了一些非常奇怪的边缘情况。