只是出于好奇,是否可以使用单个正则表达式解析完全由随机但有效的正则表达式组成的字符串?
给定正则表达式字符串:
<[^>]*>\xA9
解析为:
<[^>]*>
\xA9
其中第一个匹配 html,第二个匹配版权符号。
编辑:我在SO上发现了一个类似的问题,声称这可能是可能的。在这里,我仅指 JavaScript ECMA-262 中的正则表达式。
只是出于好奇,是否可以使用单个正则表达式解析完全由随机但有效的正则表达式组成的字符串?
给定正则表达式字符串:
<[^>]*>\xA9
解析为:
<[^>]*>
\xA9
其中第一个匹配 html,第二个匹配版权符号。
编辑:我在SO上发现了一个类似的问题,声称这可能是可能的。在这里,我仅指 JavaScript ECMA-262 中的正则表达式。
不,这是不可能的:正则表达式语言允许用括号表示捕获和非捕获组、环视等的表达式,其中括号必须保持平衡。甚至在理论上也不可能编写一个正则表达式来验证括号在给定字符串中是否平衡。如果没有这样做的能力,您将不知道一个正则表达式在哪里结束而另一个在哪里开始。
一般来说,正则表达式语法相对复杂。要了解它的复杂程度,请查看 JavaPattern
类的源代码中的解析器。