regexp

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Всем привет!
Нужна помощь. Есть текст
HTML:
<br/>
<br/>
<@f> ertert DHDocNumber</@f>
</p>
<@f> 1234</@f><p>какой-то текст</p>

<ls> ertert <@f>erty</@f> DHDocNumber</ls>
В нем надо найти все теги <ls> и <@f> за один проход

Моих мозгов хватило на такую конструкцию :(
JavaScript:
(<@[fF]>.*<\/@[fF]>)|(<[lL][sS]>.*<\/[lL][sS]>)

Результат - 3 совпадения. Мне же надо получить сначала все теги <@f>, а потом все <ls>
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
Всем привет!
Нужна помощь. Есть текст
HTML:
<br/>
<br/>
<@f> ertert DHDocNumber</@f>
</p>
<@f> 1234</@f><p>какой-то текст</p>

<ls> ertert <@f>erty</@f> DHDocNumber</ls>
В нем надо найти все теги <ls> и <@f> за один проход

Моих мозгов хватило на такую конструкцию :(
JavaScript:
(<@[fF]>.*<\/@[fF]>)|(<[lL][sS]>.*<\/[lL][sS]>)

Результат - 3 совпадения. Мне же надо получить сначала все теги <@f>, а потом все <ls>
варианты вложенности - только @if в ls ?
и зачем варианты с регистрами - вродиж есть у регулярок ключ нечувствительности
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Вообще вложенности быть не должно, но глупость непобедима :)
Потому нужна любая вложенность. Но я наверное буду делать через рекурсию
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Идея в следующем. Нужно регулярное выражение, которое возвращает последнее вхождение <ls> или <@f> которое не содержит ни один из упомянутых тегов
В общем осилил. Получилась вот такая конструкция:
JavaScript:
(<@f>(?!.*<ls>)(?!.*<@f>)(.*?)<\/@f>)|(<ls>(?!.*<ls>)(?!.*<@f>)(.*?)<\/ls>)
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!