2

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

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

我需要在每个之前获取前一个单词(上面的“apples”和“oranges”)<xref(.*?)>

4

1 回答 1

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 ) {

它也能正常工作(好吧,除了一些非常奇怪的边缘情况。

于 2013-06-20T13:06:50.293 回答