gpt4 book ai didi

regex - 可以使用正则表达式来匹配嵌套模式吗?

转载 作者:行者123 更新时间:2023-12-01 19:02:30 25 4
gpt4 key购买 nike

是否可以编写一个正则表达式来匹配出现次数未知的嵌套模式?例如,当外大括号内嵌套未知数量的左大括号时,正则表达式是否可以匹配左大括号和右大括号?

例如:

public MyMethod()
{
if (test)
{
// More { }
}

// More { }
} // End

应该匹配:

{
if (test)
{
// More { }
}

// More { }
}

最佳答案

没有。就是这么简单。有限自动机(正则表达式底层的数据结构)除了其所处状态之外没有内存,如果您有任意深度的嵌套,则需要一个任意大的自动机,这与 的概念相冲突有限自动机。

您可以将嵌套/配对元素匹配到固定深度,其中深度仅受您的内存限制,因为自动机变得非常大。然而,在实践中,您应该使用下推自动机,即上下文无关语法的解析器,例如 LL(自上而下)或 LR(自下而上)。您必须考虑到更糟糕的运行时行为:O(n^3) 与 O(n),其中 n = length(input)。

有许多可用的解析器生成器,例如 ANTLR对于Java。查找 Java(或 C)的现有语法也不难。
了解更多背景:Automata Theory在维基百科

关于regex - 可以使用正则表达式来匹配嵌套模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com