与指定的第一个子字符串匹配的Perl正则表达式

时间:2012-10-03 21:16:33

标签: regex perl

我需要从HTML文档中提取数据,并仅使用有趣的信息撰写XML文档。我这样做的方法是将HTML文档逐步转换为XML文档。我在每行中有5个最外面的XML标记,现在我正在尝试构建其中的内容。

我有一条以这种方式构建的行:

   <myTag> 
      blablabla <a href="link/I/want" *some css* > title I want </a> some other stuff <a href="link that/I/don't/want" *some css*> text I don't want </a> blablabla 
   </myTag>

我想要的是:

    <myTag>
    <link>link/I/want</link>
    <title> title I want </title>
    </myTag>

我的正则表达式是:

    /a href="(.*)"(.*)>(.*)<\/a>/ 

希望获得#$ 1 = url,$ 2 =无论如何,$ 3 =标题。

这不起作用,因为它改为:

    <myTag>
    <link>link/I/want *some css* > title I want </a> some other stuff <a href="link that/I/don't/want" *some css*</link>
    <titl>text I don't want</title>
    </myTag>

如何提取线的FIRST锚标记的内容?

谢谢!

1 个答案:

答案 0 :(得分:3)

只使用非贪婪的表达式:

/a href="(.*?)"(.*?)>(.*?)<\/a>/

在每个?之后注意*