Веб Дизайн - статьи


Шаг 5. Добавим в основное выражение проверку на определённые атрибуты


Опишем задачу формальным языком:

  1. Найдём подстроку '<'
  2. Начнём захватывать символы в последовательность

    1. Захватим подстроку 'p'
    2. Добавим альтернативную последовательность
    3. Захватим подстроку 'li'

  3. Завершим захватывать совпадения
  4. Захватим 1 или больше символов \s
  5. Захватим минимальные 0 или больше символов, не совпадающих с набором символов '>'
  6. Добавим регулярное выражение с шага 4: class\s*=\s*(['»])content\1
  7. Захватим 0 или более символов, не совпадающих с набором символов '>'
  8. Захватим подстроку '>'
  9. Начнём захватывать символы в последовательность

    1. Начнём захватывать символы в несохраняющую последовательность

      1. Начнём проверку на отсутствие удачного совпадения справа последовательности из

        1. '</'
        2. совпадение, найденное на шагах 2-3 (ссылка на последовательность 1)
        3. '>'

      2. Завершим проверку
      3. Захватим любой символ

    2. Завершим захватывать совпадения
    3. Захватим последовательность 0 или более раз

  10. Завершим захватывать совпадения
  11. Захватим подстроку '</'
  12. Захватим совпадение, найденное на шагах 2-3 (ссылка на последовательность 1)
  13. Захватим подстроку '>'

Переводим её в операторы регулярного выражения:

  1. <
  2. (

    1. p
    2. |
    3. li

  3. )
  4. \s+
  5. [^>]*?
  6. class\s*=\s*(['»])content\2
  7. [^>]*
  8. >
  9. (

    1. (?:

      1. (?!

        1. </
        2. \1
        3. >

      2. )
      3. .

    2. )
    3. *

  10. )
  11. </
  12. \1
  13. >

Результирующее выражение:

<(p|li)\s+[^>]*?class\s*=\s*(['"])content\2[^>]*>((?:(?!</\1>).)*)</\1>




- Начало -  - Назад -  - Вперед -



Книжный магазин