是否可以使用匹配所有有效正则表达式的正则表达式?

时间:2010-05-25 17:19:22

标签: regex computer-science regular-language

是否可以使用正则表达式来检测给定字符串是否是有效的正则表达式?

说我有一些字符串,可能是也可能不是有效的正则表达式。我想让正则表达式匹配那些对应于有效正则表达式的字符串。那可能吗?或者我是否使用一些更高级别的语法(即无上下文语言)来检测这个?如果我使用像Perl regexps这样的扩展版regexp会影响吗?

如果可以,正则表达式匹配正则表达式是什么?

3 个答案:

答案 0 :(得分:8)

不,这是不可能的。这是因为有效的正则表达式涉及分组,这需要平衡的括号。

平衡分隔符不能与正则表达式匹配;他们必须与context-free grammar匹配。 (该文章的first example处理平衡括号。)

答案 1 :(得分:1)

在这里看到一篇优秀的文章:

Regular expression for regular expressions?

答案是正则表达式不是使用常规语法编写的,而是使用无上下文语法编写的。

答案 2 :(得分:0)

如果您的问题“匹配所有有效的正则表达式”,答案是(可能令人惊讶地)“是”。正则表达式.*匹配所有有效(和无效)正则表达式,但对于确定您是否正在查看有效表达式是非常无用的。

然而,由于问题是“匹配所有且只有有效的正则表达式”,答案是(因为DVK和Platinum Azure“已经说'不'。