我的文本文件包含2行:
<IMG SRC="/icons/folder.gif" ALT="[DIR]"> <A HREF="yahoo.com.jp/">yahoo.com.jp/</A>
</PRE><HR>
Run Code Online (Sandbox Code Playgroud)
在我的Perl脚本中,我有:
my $String =~ /.*(HREF=")(.*)(">)/;
print "$2";
Run Code Online (Sandbox Code Playgroud)
我的输出如下:
Output 1: yahoo.com.jp
Output 2: ><HR>
Run Code Online (Sandbox Code Playgroud)
我想要实现的是让我的Perl脚本自动提取内部的字符串 <A Href="">
由于我是正则表达式的新手,我想问一下我的正则表达式是不是很糟糕?如果是这样,有人可以提供一些建议,让它看起来更好吗?
其次,我不知道为什么我的第二个输出是"><HR>",我认为预期的行为是将跳过output2,因为它不包含HREF =".显然我非常错误.
谢谢您的帮助.
要回答你关于为什么你的正则表达式不起作用的具体问题,你正在使用.*,这是"贪婪" - 它将默认匹配尽可能多.替代品将使用非贪婪的形式,.*?或者更加严格地说明您要匹配的内容.例如,[^"]*将匹配任何不是双引号的东西,这似乎是您正在寻找的东西.
但是,是的,其他海报是正确的 - 使用正则表达式来做任何在HTML解析中非常重要的事情都是灾难的一个方法.从技术上讲,你可以正确地完成它,特别是在Perl 5.10(具有更高级的正则表达式功能)中,但它通常不值得头疼.
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |