Как захватить в атрибутах HTML - PullRequest
0 голосов
/ 19 апреля 2011
<p <%=foo1%> <%=foo2%> >

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

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

</p>

Я ищу регулярное исследование, результатом которого должны быть foo1 и foo2, потому что это значения, объявленные как атрибуты.bar1 и bar2 не должны регистрироваться, поскольку они не объявлены как атрибуты.

Я использую ruby ​​1.8.7.

Ответы [ 4 ]

0 голосов
/ 20 апреля 2011

Будет ли это работать?

/(?:<|\G)[^<>]*?<%=([^<>]*?)%>/
0 голосов
/ 19 апреля 2011

Maaaybe что-то вроде

<(?:[^>]*<%=(.*)%>)+[^>]*>
0 голосов
/ 19 апреля 2011

Это тот случай, когда я думаю, что вам лучше сделать два прохода. Сначала извлеките все значения данных <%%>, которые являются атрибутами внутри тегов. Затем пройдите и извлеките <% и%>.

Например:

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

Дает вам:

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

Тогда простой

<%=(.*?)%>

на выходе из первого регулярного выражения, дает вам foo1, foo2 и т. Д. Я пытался создать комбинированное, но единственный способ сделать это - использовать операцию просмотра. Я не думаю, что это поддерживается в Ruby, и, несмотря на то, что предварительный просмотр должен был бы совпадать в одной и той же точке несколько раз, я полагаю, что большинство движков вышло бы из этого.

0 голосов
/ 19 апреля 2011

Как насчет чего-то подобного ..

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

Предполагается, что вы будете выполнять регулярное выражение на выходе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...