用于解析html链接的正则表达式

时间:2009-06-26 13:28:17

标签: regex

我有这种类型的snippit html:

<li><label for="summary">Summary:</label></li>
<li class="in">
    <textarea class="ta" id="summary" name="summary" rows="4" cols="10" tabindex="4">
        ${fieldValue(bean: book, field: 'summary')}</textarea> 

    <a href="#" class="tt">
        <img src="<g:createLinkTo dir='images/buttons/' file='icon.gif'/>" alt="Help icon for the summary field">
        <span class="tooltip">
            <span class="top"></span>
            <span class="middle">Help text for summary</span>
            <span class="bottom"></span>
        </span>
    </a>
</li>

我想在XXXX之间拉出alt值和文本,并用下面的代码替换a标签。

这是我对reg ex

的刺激
<a href="#" class="tt">.*alt="(.*)".*<span class="middle">(.*)<\/span><\/a>

使用回调输出

<ebs:cssToolTip alt="$1" text="$2"/>

我在http://rubular.com/上试了一下它并没有完全奏效。任何建议

4 个答案:

答案 0 :(得分:1)

您可能希望确保正则表达式不会贪婪地拾取字符 - 请使用“。*?”而不是直接“。*”。

答案 1 :(得分:1)

你是什么意思,“它不太有效”?它怎么会失败?

一个建议(未测试你的正则表达式):请注意*是一个贪婪的运算符,所以.*很少是一个好主意,因为它可能比你想要的更多。

尝试:

<a href="#" class="tt">.*alt="([^"]*)".*<span class="middle">([^"]*)<\/span><\/a>

答案 2 :(得分:1)

我想通过从另一个stackoverflow问题中获取一个想法来解决它

<a href="#" class="tt">.*alt="([^"]*)".*<span class="middle">([^<]*).*<\/a>

这似乎适用于http://rubular.com/网站

答案 3 :(得分:0)

你走了: http://rubular.com/regexes/8434

你面临着两个潜在的问题。首先,不添加// m选项,'。'不符合换行符。其次,你使用的是贪婪匹配。添加'*?'让它更好。

/<a href="#" class="tt">.*?alt="([^"]*)">.*?<span class="middle">(.*?)<\/span>/m