Вложенность html тегов

Статус
В этой теме нельзя размещать новые ответы.

Orbit@L

Писатель
Регистрация
19 Июн 2012
Сообщения
7
Реакции
2
Есть html код с вложенностью тега div, в котором вложенность может быть до третьего уровня.
Код:
<div class="wrap">
  <div class="body" title="FAQ">
      Some text
      <div class="wrap">
        <div class="body" title="title1"> // Level 2
        Text1...
        </div>
      </div>
      <div class="wrap">
        <div class="body" title="title2"> // Level 2
        Text2...
        </div>
      </div>
      <div class="wrap">
        <div class="body" title="title3"> // Level 2
        Text3...
        <div class="wrap">
            <div class="body" title="title4"> // Level 3
            Text4...
            </div>
        </div>
      </div>
  </div>
</div>
Помогите написать регулярное выражение с заменой html на bbcode, т.к. мое работает корректно только с тегами без вложенности.
Код:
"<div class="body" title="(.*?)">(.*?)</div>", "[tag=$1]$2[/tag]"
 
Регулярные выражения не подходят для вложенных структур. Единственный вариант, который я вижу, это написать 3 регулярки и запускать их по очереди:
1. Для третьего уровня вложенности
2. Для второго
3. Для первого

Запускать нужно именно в таком порядке.
 
Помогите написать регулярное выражение с заменой html на bbcode, т.к. мое работает корректно только с тегами без вложенности.
Код:
"<div class="body" title="(.*?)">(.*?)</div>", "[tag=$1]$2[/tag]"

Всем спасибо за ответы :), я нашел решение. Кому интересно:
Код:
string s1 = Regex.Replace(outstring, @"<div class=""wrap"">\s*<div class=""body"" title=""(.*?)"">", "[tag=$1]", RegexOptions.Singleline);
string s2 = Regex.Replace(s1, @"</div>\s*</div>", "[/tag]", RegexOptions.Singleline);
Получим:
Код:
[tag=FAQ]
    Some text
    [tag=title1] // Level 2
        Text1...
        [/tag]
    [tag=title2] // Level 2
        Text2...
        [/tag]
    [tag=title3] // Level 2
        Text3...
        [tag=title4] // Level 3
            Text4...
            [/tag]
    [/tag]
</div>
Как видно я забыл ещё один </div> :rolleyes:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху