正则expression式匹配有效的正则expression式

有没有正则expression式匹配有效的正则expression式?

(我知道有几种正则expression式,其中一种可以。)

如果你只是想检查一个正则expression式是否有效,只要试着用你正在使用的编程语言或正则expression式库进行编译。

正则expression式的parsing远不是微不足道的。 作为RegexBuddy的作者,我已经在这个区块几次了。 如果你真的想这样做,使用正则expression式来标记input,并将parsing逻辑保留为程序代码。 也就是说,你的正则expression式会一次匹配一个正则expression式( ^$\w()等),你的程序代码会检查它们是否正确。

有没有正则expression式匹配有效的正则expression式?

通过定义,这很简单:

所有正则expression式的语言是没有 正规的语言(只要看嵌套的括号),因此不能有一个正则expression式来parsing它。

不幸的是,由于括号嵌套错误,大多数无效的正则expression式是无效的。 这正是正则expression式无法匹配的stringtypes。 (好吧,一些奇特的正则expression式系统有recursion扩展,但这很less见)

如前所述,由于recursion性质,不能用正则expression式来描述正则expression式。 你需要一个上下文无关的语法。

但无论如何,这样的正则expression式有什么意义呢? 如果你只是想检查正则expression式是否正确,你可以简单地尝试使用它(Java中的Pattern.compile(regexp)),如果尖叫它是无效的。

你可能需要一个parsing器,而不是一个正则expression式。 正则expression式是强大的工具,但不是parsing工具。 例如,它们不适合嵌套语法。

来自Douglas Crockford的The JavaScript Programming Languagevideo4(共4):

/\/(\\[^\x00-\x1f]|\[(\\[^\x00-\x1f]|[^\x00-\x1f\\\/])*\]|[^\x00-\x1f\\\/\[])+\/[gim]*/

http://video.yahoo.com/watch/111596/1710658约在-17.20。;

根据你的目标,我可以肯定地说。

如果你想从某个地方过滤出正则expression式,这可能会很困难,因为正则expression式具有所有的大小和形状,并不是所有的都以斜杠开始和结束。

如果你只是需要知道是否有正则expression式是有效的还有另一种方法。 根据你使用的语言,你可以尝试/捕捉

如果你能更具体一些,我可以尝试给出一个更好的答案,这个问题是无情的。