Regex Exception в строках - PullRequest
       1

Regex Exception в строках

0 голосов
/ 27 апреля 2011

Скажем, у меня есть регулярное выражение:

"|<pizza><onion>(.*)</onion><tomato>(.*)</tomato></pizza>|"

Это соответствует нескольким строкам и возвращает его (php: preg_match_all).Теперь я хочу добавить исключение (. *) В лук: лук не может иметь значение «по умолчанию».Как я могу исключить это?

1 Ответ

1 голос
/ 27 апреля 2011

Попробуйте:

~<pizza><onion>((?:(?!</onion>|default).)*)</onion><tomato>((?:(?!</tomato>).)*)</tomato></pizza>~s

Или эквивалент, но с включенным флагом x:

~
<pizza>
<onion>
(
  (?:(?!</onion>|default).)* # anything not containing `</onion>` and `default` 
)
</onion>
<tomato>
(
  (?:(?!</tomato>).)*        # anything not containing `</tomato>` 
)
</tomato>
</pizza>
~sx                          # enable DOT-ALL (s), and COMMENTS (x)

, где ~ - разделитель.

Если ваш источник имеет комментарии, <!-- possible tags --> или может иметь произвольное количество вложенных тегов, я настоятельно рекомендую вместо этого использовать некоторый (X) анализатор HTML-кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...