Regex Perl正则表达式解释

Regex Perl正则表达式解释,regex,perl,Regex,Perl,我有这样的正则表达式: s/<(?:[^>'"]|(['"]).?\1)*>//gs s/'“]|(['”])。?\1)*>//gs 我不知道它到底是什么意思。正则表达式看起来是为了从输入中删除HTML标记 它匹配以开头、以code>结尾的文本,其中包含非引号或带引号的字符串(可能包含)。但它似乎有一个错误: ?说明引号可能包含0或1个字符;它可能是*?(0个或更多字符)。为了防止回溯在某些奇怪的情况下执行类似于使匹配引号的操作,它需要将(?:…)分组更改为所有格(而不是

我有这样的正则表达式:

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

我不知道它到底是什么意思。

正则表达式看起来是为了从输入中删除HTML标记

它匹配以
开头、以code>结尾的文本,其中包含非引号或带引号的字符串(可能包含
)。但它似乎有一个错误:


说明引号可能包含0或1个字符;它可能是
*?
(0个或更多字符)。为了防止回溯在某些奇怪的情况下执行类似于使
匹配引号的操作,它需要将
(?:…)
分组更改为所有格(
而不是
)。

此工具可以解释详细信息:

节点说明
--------------------------------------------------------------------------------
<                        ''

因此,它会尝试删除ysth也提到的HTML标记。

如果您将regexp输入并将鼠标悬停在每个片段上,它会在工具提示中对其进行解释。您特别不了解哪些部分?这有助于了解要解释的内容。我认为这一行的总体意图是从输入中删除所有HTML标记。@Barmar非常感谢……这正是我真正想要的:)@Barmar,除了它几乎肯定应该是
*?
,而不是
;可能是转录错误?(实际上,它应该是
*+
,或者它应该是
*?
,而
(?:
应该是
(?>
)看起来服务坏了。不管怎样,结果就是答案。
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
--------------------------------------------------------------------------------
  >                        '>'