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



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


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

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

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

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

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

          1. '</'
          2. совпадение, найденное на шагах 2-3 (ссылка на последовательность 1)
          3. '>'
          4. Завершим проверку
          5. Захватим любой символ
          6. Завершим захватывать совпадения
          7. Захватим последовательность 0 или более раз
          8. Завершим захватывать совпадения
          9. Захватим подстроку '</'
          10. Захватим совпадение, найденное на шагах 2-3 (ссылка на последовательность 1)
          11. Захватим подстроку '>'
          12. Переводим её в операторы регулярного выражения:

          13. <
          14. (

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

              1. (?:

                1. (?!

                  1. </
                  2. \1
                  3. >
                  4. )
                  5. .
                  6. )
                  7. *
                  8. )
                  9. </
                  10. \1
                  11. >
                  12. Результирующее выражение:

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




                    Содержание  Назад  Вперед