jasonOk
@jasonOk
Легче болтать, чем код писать

Как составить правильно?

Условие:
В тексте могут идти подряд 2 блока <div> (в каждом из них может быть любой текст),
но главное, чтобы один шёл следом за другим.
<div class="first">First</div><div class="second">Second</div>

Должен соблюдаться порядок (первый блок, очевидно, будет с классом "first") и если будет только один блок <div class="first">First</div>, то он вырезается, точно также если будет только див <div class="second">Second</div> он вырезается.
Каким регулярным выражением проверить, два блока, или нет?
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
@evgeniy_trebin
Ruby on Rails developer
/<div\s+class="first"\s*>.*<\s*\/div>\s*<div\s+class="second"\s*>.*<\s*\/div>/


пример на Ruby
>> regex = /<div\s+class="first"\s*>.*<\s*\/div>\s*<div\s+class="second"\s*>.*<\s*\/div>/

>> s = %{<div class="first">First</div><div class="second">Second</div>}
>> regex =~ s
=> 0
т.е. вхождение с 0 символа

>> s = %{<div class="second">Second</div>}
=> "<div class=\"second\">Second</div>"
>> regex =~ s
=> nil
т.е. вхождения нет

>> s = %{<div class="first">First</div>}
=> "<div class=\"first\">First</div>"
>> regex =~ s
=> nil
т.е. вхождения нет
Ответ написан
Комментировать
iam_not_a_robot
@iam_not_a_robot
Проверьте так если перед ним другого DIVа не бывает:
/<\/div>\n{0,}<div\sclass=\"second\">/ism
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы