我有这种类型的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/上试了一下它并没有完全奏效。任何建议
答案 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