可以使用正则表达式来匹配嵌套模式吗? [复制]

2024-04-09

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

例如:

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

  // More { }
} // End

应匹配:

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

  // More { }
}

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

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

有许多可用的解析器生成器,例如ANTLR http://www.antlr.org/对于Java。找到 Java(或 C)的现有语法也不难。
了解更多背景:自动机理论 http://en.wikipedia.org/wiki/Automata_theory在维基百科

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以使用正则表达式来匹配嵌套模式吗? [复制] 的相关文章

  • 如何在MySQL选择查询中编写正则表达式?

    我尝试过这个表达 b word w b i比较一个word对照其他单词列表来查找重复项 我用了preg math all 效果很好 我想做同样的事情 但这次检查从 mysql 数据库检索到的单词 这是我写的 SELECT FROM tabl
  • nginx位置正则表达式,匹配多次

    如何在 nginx 位置正则表达式中多次匹配 看来 x x 语法永远不起作用 例如 location abc w 1 3 从来不工作 您必须引用包含以下内容的位置 or 人物 location abc w 1 3 否则 nginx 将其解析
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • c++11 正则表达式比 python 慢

    嗨我想了解为什么以下代码使用正则表达式进行分割字符串分割 include
  • 被一个简单的正则表达式难住了

    我想看看字符串是否s包含正则表达式中的任何符号 下面的正则表达式可以正常工作rubular http rubular com s asd d s 但在 Ruby 1 9 2 中 它给出了以下错误消息 syntax error unexpec
  • 创建正则表达式来检查强密码

    假设我有一个检查字母数字的正则表达式 我现在想创建另一个正则表达式来检查密码中至少有 1 个数字 我想检查它是否至少有 1 个非字母数字字符 字母或数字以外的字符 我应该单独调用每个函数 如果一个函数失败返回 false 还是有办法将它们合
  • 如何使用 preg_replace 实现带条件的模板

    我正在尝试实现一个管理界面 经理可以在其中创建网站元标记形成的高级规则 我有一个函数 它采用模板并用 registry 中的值替换其中的占位符 并在需要时应用修饰符 registy array profession name gt acto
  • java regex 屏蔽列表中的所有元素,最后 4 个字符可见

    我有一个字母数字字符串列表 如下所示 nG5wnyPVNxS6PbbDNNbRsK5zanG94Et6Q4y74 GgQoDWqP7KtxXeePyyebu5EnNp8XxPC1odeNv GgQoDWqP7KtxXeePyyebu5EnN
  • 使用 .htaccess 重定向到动态相对路径?

    是否可以使 htaccess 理解 动态相对路径并正确重定向到它们 我的设置如下 http domain com htroot aaa xyz http domain com htroot bbb xyz http domain com h
  • 使用 R 从字符串中提取函数参数

    最好使用stringr包 我想创建一个函数extract 以字符串向量作为参数 vec lt c div span icon hospital user i18n t Enrolments or i18n t Paper a string
  • 如何让“grep -zoP”单独显示每个匹配项?

    我有一个此表格的文件 X this is the first match blabla X this is the second match and here we have some fluff 我想提取 X 之后和相同标记之间出现的所有
  • 将字符串分解为标记,保持引用的子字符串完整

    我不知道我在哪里看到它 但是谁能告诉我如何使用 php 和 regex 来完成这个任务 this is a string that has quoted text inside 我希望能够像这样爆炸它 0 this 1 is 2 a 3 s
  • Java:正则表达式 - 如何获取第一个引用文本

    作为初学者regex我相信我要问的事情太简单了 但无论如何我都会问 希望它不会打扰你帮助我 可以说我有这样的文字 你好 cool1 这个词 cool2 我想获取第一个引用的文本 即 cool1 不带 我的模式应该是什么 当使用匹配器时 我如
  • 正则表达式匹配带有连字符和/或撇号的单词

    我正在寻找一个正则表达式来匹配带有连字符和 或撇号的单词 到目前为止 我有 w w w 这在大多数情况下都有效 但如果先有一个撇号 然后有一个连字符 例如 qu est ce 则它不匹配 我可以附加更多选项 尽管也许还有另一种更有效的方法
  • 需要 RegEx 返回第一段或前 n 个单词

    我正在寻找一个正则表达式来返回段落中的前 n 个单词 或者如果该段落包含少于 n 个单词 则返回完整的段落 例如 假设我最多需要前 7 个单词 p one two p
  • 正则表达式将单词的开头和结尾与元音匹配

    我正在尝试以下操作Regex aeiou aeiou 但它不起作用 我测试了 abcda 并且不匹配 它应该只是 aeiou aeiou 额外的 您需要第二个字符是一个文字点 例如 a hello 但由于您的测试用例 abcda 不包含这样
  • 由于重复捕获组而不是捕获重复组,正则表达式不匹配

    我有以下正则表达式 A G A G 具有以下表达式 A BsCb 我期望 3 个匹配结果 A Bs Cb 但测试在https regex101 com https regex101 com 只给我最后一场比赛Cb 并告诉我重复捕获组只会捕获
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 如何在正则表达式中输入“:”(“冒号”)?

    冒号 在正则表达式中具有特殊含义 但我需要按原样使用它 例如 A Za z0 9 我试图逃避它 但这不起作用 A Za z0 9 在大多数正则表达式实现 包括 Java 的 中 无论在字符类内部还是外部 都没有特殊含义 您的问题很可能是由于
  • 正则表达式验证字符串是否包含三个非空白字符

    我使用欧芹 js 来验证输入 并且使用 data parsley pattern 它允许我传递正则表达式 我正在尝试验证该字符串以确保它至少包含三个非空白字符 下面是应该无效或有效的字符串 valid 1 2 b invalid 1 b s

随机推荐

  • D 的写法是什么?

    我用 C 写了这个程序 http pastebay com 182597并且在二郎中 http pastebay com 185244 为了练习 我尝试用 D 重写 一个朋友也用 D 写了它 但是写得不同 https stackoverfl
  • 如何查找 Windows 任务栏位置和大小? [复制]

    这个问题在这里已经有答案了 我创建了一个在系统托盘中运行的应用程序 当用户单击 尝试 图标时 屏幕右下角 即系统托盘的正上方 会出现一个小表单 该表格基本上 粘 在托盘上 这是我的问题 即使用户将任务栏停靠在其他地方 我如何完成同样的事情
  • 如何在 Laravel 中包含 Bootstrap-Vue

    我如何安装 导入 包含引导程序Vue https bootstrap vue js org docs 进入我的laravel项目 我是 Vue 新手 我知道如何安装Vue JS应用程序 但我如何添加它laravel app scss Fon
  • 使用 PIP 安装后,Windows 上的 Visual Code 找不到模块。在终端窗口中使用错误的Python?

    我在 Windows 8 1 上使用 Visual Code 1 47 0 也安装了最新版本的 Python 扩展 我刚刚使用安装了一个模块pip 然后我创建了一个新的 Python 文件来测试它 IDE 突出显示import语句作为错误
  • 使用 ctypes/cffi 解决循环共享对象依赖关系

    我想用cffi 甚至ctypes如果我必须 从 Linux 上的 Python 3 访问 C ABI 该API由许多实现 so文件 我们称它们为libA so libB so and libC so 这样libA包含主要导出函数 其他库提供
  • 容器化的 Spring 应用程序看不到本地文件?

    我有一个 spring boot 应用程序和一个 postgresql 数据库 我在容器中运行它们docker compose 问题是 正常的通话 例如 localhost 8080 api users返回正常值并正常运行 但是 当我尝试访
  • system.data.oledb.oledbException(0x80004005):找不到文件

    有人可以帮我解决这个错误吗 我想不通 我在 Windows XP 上遇到此错误 但在 Windows 7 上没有 我所做的是附加一张照片并将其保存到数据库 MS Access 作为我的数据库 照片出现在图片框上 但之后一切都变得一团糟 我正
  • R:ggplot背景渐变着色

    我想生成具有渐变颜色的 ggplot 填充绘图面板及其背景 如此处所示 正如您所看到的 渐变背景颜色包含绘图面板及其背景 目前 我只知道所需解决方案的 近似值 library ggplot2 library grid library gri
  • 实施 IEnlistmentNotification 时我应该在哪里执行操作?

    我正在尝试通过实现来创建自定义 资源管理器 I入伍通知 http msdn microsoft com en us library system transactions ienlistmentnotification 28v vs 110
  • Datagrid 与 Gridview [重复]

    这个问题在这里已经有答案了 可能的重复 ASP NET 中 DataGrid 和 GridView 之间的区别 https stackoverflow com questions 4230 the difference between a
  • php中按字母顺序排列的列表组[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个成员表 其中存储有关成员的所有详细信息 包括其姓名 电子邮件 电话等 我希望该名称按字母顺序显示 如示例所示 A Alan Alex
  • 如何更改 Eclipse 模板中使用的 ${user} 变量的值

    我希望 Eclipse 使用从帐户信息中获取的用户真实姓名 而不是硬编码默认的 author 模板 在 Linux 中 但也欢迎 Windows 解决方案 将其输入 Eclipse 配置中的某个位置也是可以接受的 可惜我找不到正确的位置 看
  • Slick 3 从查询中返回自定义案例类

    目前我有这样的事情 val q for department lt departments if department id x employee lt employees if employee departmentId departme
  • 如何防止PayPal重复付款?

    我有一个简单的 立即付款 按钮 通过按钮创建者创建的代码 并添加了一个 自定义 隐藏字段来识别它 我想知道是否可以添加一些额外的隐藏字段来告诉 PayPal 此交易不应进行两次
  • 正则表达式匹配/分组字符串中的重复字符

    我需要一个正则表达式来匹配字符串中的字符组 这是一个示例字符串 qwwwwwwwwweeeeerrtyyyyyqqqqwEErTTT 它应该匹配 比赛组 结果 1 q 2 wwwwwwwww 3 哎呀 4 rr 5 t 6 yyyyy 7
  • 如何在 SP 元数据中配置自定义属性

    我开始知道 在任何 SSO 解决方案中 如果 SP 需要任何其他属性 它可以使用以下方法在其元数据中发布它们 属性消费服务争论 现在可以添加所需的属性 如下所示
  • 如何在 VSTS 构建服务器上为 .Net Core 2 项目编译 Typescript 文件

    我一直在尝试在 VSTS 上的 CI 构建过程中将 TypeScript 文件编译为 JavaScript 文件 一旦生成了 JavaScript 文件 我的 gulp 文件进程就可以将它们处理到 wwwroot 文件夹 该项目在 Visu
  • 在联合上分配泛型类型

    TS 中有没有办法通过联合 分布 泛型类型 type Container a value A type Containers a
  • 使用特定主题标签时检索 Twitter 图片或视频

    我正在寻找为学校活动创建一个页面 基本上我想显示带有特定主题标签的推文的所有图片 如果可能的话还可以显示任何 youtube 或 vimeo 视频 我一直在查看 twitter API 但是我找不到起点 有人知道如何解决这个问题吗 我将不胜
  • 可以使用正则表达式来匹配嵌套模式吗? [复制]

    这个问题在这里已经有答案了 是否可以编写一个正则表达式来匹配出现次数未知的嵌套模式 例如 当外大括号内嵌套未知数量的左大括号时 正则表达式是否可以匹配左大括号和右大括号 例如 public MyMethod if test More Mor