我有一个场景来从Perl中的字符串中获取前一个单词。例如
$str = "there are lot of apples <xref id=1> and " .
"a lot of oranges <xref id=2> as blah blah";
我需要在每个<xref(.*?)>
答案 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 ) {
它会同样好用(除了一些非常奇怪的边缘情况。