代码之家  ›  专栏  ›  技术社区  ›  Thorsten79

与有效Regexp匹配的Regexp

  •  33
  • Thorsten79  · 技术社区  · 17 年前

    是否存在与有效正则表达式匹配的正则表达式?

    (我知道regexp有几种风格,一种就可以了。)

    7 回复  |  直到 17 年前
        1
  •  42
  •   Dario    16 年前

    根据定义,它非常简单:

    所有正则表达式的语言都是 语言(只看嵌套的括号),因此不可能有 表达式来解析它。

        2
  •  38
  •   Amal Murali    12 年前

    如果您只想检查正则表达式是否有效,只需尝试使用您正在使用的任何编程语言或正则表达式库来编译它。

    RegexBuddy ,我去过那个街区好几次了。如果您真的想这样做,可以使用正则表达式来标记输入,并将解析逻辑留给过程代码。也就是说,您的正则表达式将匹配一个正则表达式令牌( ^ , $ \w , ( , )

        3
  •  15
  •   Darron    17 年前

    不幸的是,由于括号嵌套错误,大多数无效正则表达式都是无效的。这正是正则表达式无法匹配的字符串类型。(好的,一些奇特的正则表达式系统有递归扩展,但这很少见)

        4
  •  9
  •   Dr. Hans-Peter Störr    17 年前

    如前所述,由于正则表达式的递归性质,无法用正则表达式描述正则表达式。你需要一个上下文无关的语法。

        5
  •  5
  •   PhiLho    17 年前

    您可能需要一个解析器,而不是正则表达式。正则表达式是功能强大的工具,但不是解析工具。例如,它们不太适合嵌套语法。

        6
  •  4
  •   Alan Moore Chris Ballance    16 年前

    来自道格拉斯·克罗克福德的 视频4(共4段):

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

    http://video.yahoo.com/watch/111596/1710658

        7
  •  -1
  •   Toon Krijthe    17 年前

    取决于你的目标,我肯定会说也许。

    如果您想从某个地方过滤正则表达式,可能会很困难,因为正则表达式有各种大小和形状,并且它们并非都以斜杠开头和结尾。

    如果您只需要知道regexp是否有效,还有另一种方法。根据您使用的语言,您可以尝试/捕获

    如果你能说得更具体些,我可以试着给出一个更好的答案,这个问题很有意思。