首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与正则表达式匹配的正则表达式

与正则表达式匹配的正则表达式
EN

Stack Overflow用户
提问于 2014-04-18 20:54:26
回答 2查看 710关注 0票数 5

有没有人试图描述与正则表达式匹配的正则表达式?

由于重复的关键字,这个主题在网上几乎是不可能找到的。

在实际应用程序中,它可能是不可用的,因为支持正则表达式的语言通常有一种解析它们的方法,我们可以用来验证它们,还有一种在代码中划分正则表达式的方法,这些方法可以用于搜索目的。

,但我仍然在想,匹配所有正则表达式的正则表达式会是什么样的呢?应该可以编写一个.

EN

回答 2

Stack Overflow用户

发布于 2014-04-18 21:05:23

我没有这方面的正式证据,但我强烈怀疑正则表达式的语言本身并不是正则的,因此不受正则表达式的约束。这将使正确的正则表达式不可能表示出来。

为什么?可以看出,一种需要平衡括号的语言,如Lisp (或,更出名是不正规的使用抽水引理。 )

证明平衡(即适当嵌套的)括号的语言不一定遵循同样的观点。给定p,有一串平衡括号,开始于p左括号,所以y将完全由左括号组成。通过重复y,我们可以生成一个字符串,该字符串不包含相同数量的左括号和右括号,因此它们不能平衡。

正则表达式允许嵌套捕获组,似乎属于这一类别:

以上一课中的例子为例,如果我们想要捕获图像文件号和文件名,我可以编写表达式^(IMG(\d+))\.png$

无论如何,对于计算机科学栈交换站点来说,这可能是一个更好的问题。

编辑:

tomp指出,基于PCRE的正则表达式引擎(可能还有其他引擎) 实际上能够匹配所有上下文无关文法和至少一些上下文敏感语法。!这代表了表达能力上的巨大差异。假设这篇文章是正确的,相当酷!

(当然,这些扩展实现是否仍然是“正则表达式”还有待讨论。因为我们在一个编程网站上,我将采取他们的立场。在CS网站上,我可能会采取相反的立场!)

因此,从技术上讲,将正则表达式表示为正则表达式是可能的。

即便如此,编写表示所有regex的regex的任务仍然非常复杂。考虑比较验证电子邮件地址的任务。许多资源将其归结为类似于[^@]+@[^@]+的东西,或者“只要在符号上只有一个字符,在符号之前至少有一个字符,在后面至少有一个字符,我们就很好”。

但是看看这个明显的完成验证RFC 822的正则表达式。这是正确的吗?谁知道呢。我肯定不会检查的。

看到这些之后,我不想尝试编写正则表达式来验证正则表达式。

票数 6
EN

Stack Overflow用户

发布于 2014-04-18 21:12:27

我只是在几分钟内编写了这个代码,所以不要期望太过much...still,它可以匹配字符串中的正则表达式。

代码语言:javascript
复制
^([igsmx]{1,})?\/(?=.*?(\\w|\\d|\[.*?\]|\(.*?\))).*?\/([igsmx]{1,})?$

它可以扩展,看上去.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23162184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档