是否可以用正则表达式解析正则表达式字符串

Ray*_*eng 6 javascript regex

出于好奇,是否可以使用单个正则表达式来解析完全由随机但有效的正则表达式组成的字符串?

给定正则表达式的字符串:

<[^>]*>\xA9
Run Code Online (Sandbox Code Playgroud)

解析为:

<[^>]*>
\xA9
Run Code Online (Sandbox Code Playgroud)

其中第一个匹配 html,第二个匹配版权符号。

编辑:我发现在SO上提出了类似的问题,声称这可能是可能的。在这里,我仅指 JavaScript ECMA-262 中的正则表达式。

das*_*ght 8

不,这是不可能的:正则表达式语言允许带括号的表达式表示捕获组和非捕获组、环视等,其中括号必须平衡。即使在理论上也不可能编写一个正则表达式来验证给定字符串中括号是否平衡。如果没有能力做到这一点,您将不知道一个正则表达式在哪里结束,另一个正则表达式从哪里开始。

一般来说,正则表达式语法比较复杂。要了解它有多复杂,请查看 Java 类源代码中的解析器Pattern