不知道这是怎么发生的,但似乎我的 perl 正则表达式匹配在进行匹配后不会更新到下一个匹配项。它没有在每次匹配时更新 $& 和 $1 变量,而是卡在第一个匹配项中。
我到处寻找,发现这非常令人沮丧。
请参阅下面调试器的输出,如您所见,第一个匹配有意义,但第二个没有。
谢谢
DB<79> $riz =~ m{url=(.*?)Support};
DB<80> p$&;
url="http://www.svartapelsin.se" draggingName="Bunny Camp Support
DB<81> $riz =~ m{href=(.*artist?)};
DB<82> p $&;
url="http://www.svartapelsin.se" draggingName="Bunny Camp Support
DB<83>
更新:这是另一个示例,显示文本“艺术家”在字符串中,但仍未找到。$riz 的值是一个巨大的 HTML 代码,所以很难发布。
DB<103> $riz =~ m{url=(.*?)Support};
DB<104> p $&;
url="http://www.svartapelsin.se" draggingName="Bunny Camp Support
DB<105> $riz =~ m{artist};
DB<106> p $&;
url="http://www.svartapelsin.se" draggingName="Bunny Camp Support
DB<107> p string.index($riz,"artist");
string105
DB<108>
我的 $riz 是此链接中的所有 HTML http://itunes.apple.com/us/app/id385972277
当您使用用户代理 iTunes/10.2 (Macintosh; U; PPC Mac OS X 10.2)
这是另一个具有相同 $riz 的示例
DB<128> $riz =~ m/.*/;
DB<129> p $&;
url="http://www.svartapelsin.se" draggingName="Bunny Camp Support
DB<130>
...
DB<136> p substr $riz,0,20;
<?xml version="1.0"
DB<137>
我的意思是,这不是很荒谬吗?它应该刚刚输出了 $riz no 的值吗?如您所见,与所显示的形式不同。另外,m/.*/ 怎么可能不是有效的正则表达式?