我有一个场景可以从 Perl 中的字符串中获取前一个单词。例如
$str = "there are lot of apples <xref id=1> and " .
"a lot of oranges <xref id=2> as blah blah";
我需要在每个之前获取前一个单词(上面的“apples”和“oranges”)<xref(.*?)>
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 ) {
它也能正常工作(好吧,除了一些非常奇怪的边缘情况。