2014-01-07 9 views
0

У меня есть регулярное выражение, как это:Perl регулярное выражение объяснение

s/<(?:[^>'"]|(['"]).?\1)*>//gs 

, и я не знаю, что именно это означает.

+0

Если вы введете регулярное выражение в http://gskinner.com/RegExr/ и наведите указатель мыши на каждую часть, это объяснит это всплывающей подсказкой. – Barmar

+2

какая часть (ы) в частности вы не понимаете? это помогает понять, что объяснить – ysth

+0

Я думаю, что общая цель этой строки - удалить все теги HTML из ввода. – Barmar

ответ

1

Регулярное выражение предназначено для удаления тегов HTML из ввода.

Это соответствует текст, начинающийся с < и заканчивая >, содержащий Непро- >/не кавычки или строки в кавычках (которые могут содержать >). Но, похоже, эта ошибка:

.? говорит, что цитаты могут содержать 0 или 1 символ; вероятно, он должен был быть .*? (0 или более символов). И чтобы предотвратить откат от таких действий, как то, что . соответствует котировке в некоторых нечетных случаях, необходимо, чтобы группа (?: ...) была притяжательной (> вместо :).

0

Этот инструмент может объяснить детали: http://rick.measham.id.au/paste/explain.pl?regex=%3C%28%3F%3A[^%3E%27%22]|%28[%27%22]%29.%3F\1%29*%3E

NODE      EXPLANATION 
-------------------------------------------------------------------------------- 
    <      '<' 
-------------------------------------------------------------------------------- 
    (?:      group, but do not capture (0 or more times 
          (matching the most amount possible)): 
-------------------------------------------------------------------------------- 
    [^>'"]     any character except: '>', ''', '"' 
-------------------------------------------------------------------------------- 
    |      OR 
-------------------------------------------------------------------------------- 
    (      group and capture to \1: 
-------------------------------------------------------------------------------- 
     ['"]      any character of: ''', '"' 
-------------------------------------------------------------------------------- 
    )      end of \1 
-------------------------------------------------------------------------------- 
    .?      any character except \n (optional 
          (matching the most amount possible)) 
-------------------------------------------------------------------------------- 
    \1      what was matched by capture \1 
-------------------------------------------------------------------------------- 
)*      end of grouping 
-------------------------------------------------------------------------------- 
    >      '>' 

Так он пытается удалить HTML-теги, как ysth также упоминает.

+0

, что URL-адрес не работает – rbm

+0

Похоже, что служба нарушена. В любом случае результат в ответе. –

Смежные вопросы