我试图解析一个单一的字符串,并从相同的正则表达式条件的同一个字符串中获取多个数据块。我正在解析一个静态的HTML文档(由于未公开的原因,我无法使用HTML解析器来完成此工作)。我有一个表达式,如下所示:
$string =~ /\<img\ssrc\="(.*)"/;
我想要获得$ 1的价值。然而,在一个字符串中,有很多这样的img标签,所以我需要像数组返回的东西(@ 1?)这是可能的吗?
解决方法
作为Jim的答案,使用/ g修饰符(在列表上下文中或循环中)。
但要注意贪婪,你不想要。*匹配超过必要的(不要逃避< =,它们不是特别的)。
while($string =~ /<img\s+src="(.*?)"/g ) { ... }