Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式和嵌套模式:what';答案是什么?_Regex - Fatal编程技术网

Regex 正则表达式和嵌套模式:what';答案是什么?

Regex 正则表达式和嵌套模式:what';答案是什么?,regex,Regex,这表明: 可以使用正则表达式匹配嵌套模式 这是不可能的,因为嵌套模式不是常规语言和 因此,DFA(正则表达式是)无法识别它们 在阅读上述问题的答案()之前,我总是站在2一边。但现在我不太确定 Can'/(\((?>[^()]+|(?1))*\)/' 真的匹配嵌套模式吗 我在vim(和JavaScript)中尝试了上面的方法,但没有成功。尽管它可能需要转换成不同的语法。引用它的答案有9票。你必须区分三件事: 具有处理嵌套事物功能的正则表达式的实现 没有这些特性的正则表达式的实现 理论意义上的“正则

这表明:

  • 可以使用正则表达式匹配嵌套模式

  • 这是不可能的,因为嵌套模式不是常规语言和 因此,DFA(正则表达式是)无法识别它们

  • 在阅读上述问题的答案()之前,我总是站在2一边。但现在我不太确定

    Can
    '/(\((?>[^()]+|(?1))*\)/'

    真的匹配嵌套模式吗


    我在vim(和JavaScript)中尝试了上面的方法,但没有成功。尽管它可能需要转换成不同的语法。引用它的答案有9票。

    你必须区分三件事:

  • 具有处理嵌套事物功能的正则表达式的实现
  • 没有这些特性的正则表达式的实现
  • 理论意义上的“正则表达式”
  • 案例1:我知道两个可以处理嵌套括号(或其他内容)的功能

    • 引用捕获组的子模式的功能,例如:

      (\(((?>[^()])+(?)*\)

    (?1)
    指捕获组1(在其内部以获得递归)

    此功能在PCRE正则表达式引擎(PHP,R,)中可用,在Ruby(带有oniguruma语法)中可用,在Perl中可用,在Python的新正则表达式模块、用于javascript的XRegExp库、libboost

    • 堆栈系统,如.net中的:

      (?:[^()]|(?[(])|(?[)))*(?(打开)(?!)

    (有关更多信息,请参阅。)

    案例2:没有这些功能的实现:Javascript、Python的re模块、Java

    案例3:从理论上讲,“正则表达式”是对正则语言的描述。由于嵌套的不确定级别不是正则语言,因此不能用“正则表达式”来描述。然而,重要的一点是,对术语“正则表达式”的接受与术语“regex”(或“正则表达式”)没有太大关系,因为它通常被使用,这是对语言的滥用