6

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

假设我有一些字符串,它们可能是也可能不是有效的正则表达式。我想要一个正则表达式匹配那些对应于有效正则表达式的字符串。那可能吗?或者我是否使用了一些更高级别的语法(即上下文无关语言)来检测这一点?如果我使用一些扩展版本的正则表达式,比如 Perl 正则表达式,它会影响吗?

如果可能的话,匹配正则表达式的正则表达式是什么?

4

3 回答 3

8

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

平衡分隔符不能被正则表达式匹配;相反,它们必须与上下文无关语法匹配。(那篇文章的第一个例子涉及平衡括号。)

于 2010-05-25T17:22:18.397 回答
1

在此处查看出色的文章:

正则表达式的正则表达式?

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

于 2010-05-25T17:28:58.107 回答
0

如果您的问题是“匹配所有有效的正则表达式”,答案是(也许令人惊讶)“是”。正则表达式.*匹配所有有效(和无效)的正则表达式,但对于确定您是否正在查看一个有效的正则表达式毫无用处。

但是,由于问题是“匹配所有且仅有效的正则表达式”,因此答案是(正如 DVK 和 Platinum Azure 所说的“不”。

于 2010-05-28T11:01:17.597 回答