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
--------------------------------------------------------------------------------
> '>'