如何在html属性中捕获

时间:2011-04-19 16:57:20

标签: ruby regex

<p <%=foo1%> <%=foo2%> >

   <h3><%=bar1%></h3>

   <h4><%=bar2%></h4>

</p>

我正在寻找一个常规的experssion,其结果应该是foo1和foo2,因为那些是声明为属性的值。不应捕获bar1和bar2,因为它们未声明为属性。

我使用的是ruby 1.8.7。

4 个答案:

答案 0 :(得分:0)

Maaaybe就像

<(?:[^>]*<%=(.*)%>)+[^>]*>

答案 1 :(得分:0)

在这种情况下,我认为你最好做两次传球。首先,提取所有&lt; %%&gt;数据值是标记内的属性。然后,浏览并提取&lt;%和%&gt;。

例如:

 <[^>]*?((?:<%=[^%]*%>\s*)+)[^<]*>

给你:

   <%=foo1%> <%=foo2%>

然后,一个简单的

<%=(.*?)%>

关于第一个正则表达式的输出,给你foo1,foo2等。我一直在尝试构建一个组合的,但我能看到的唯一方法是使用后视操作。我不认为Ruby支持这一点,并且不管因为后视器必须多次在同一点匹配,我相信大多数引擎都会将它踢出去。

答案 2 :(得分:0)

这会有用吗?

/(?:<|\G)[^<>]*?<%=([^<>]*?)%>/

答案 3 :(得分:-1)

这样的事情怎么样..

\<\w+\s((.*)\s?)\>

这假设您将在输出

上运行正则表达式