当前位置: 首页 > 知识库问答 >
问题:

匹配由“{{”和“}}”包围的文本

常英纵
2023-03-14

我正在寻找一个正则表达式,它可以做到这一点:我的文本:

"Blablabla {{ blabla1 }} blablablabla {{ blablabla2 {{ blabla3 }} }} blablabla"

我想提取的是:

"blabla1" and "blablabla2 {{ blabla3 }}"

有人有主意吗?

我试过:“{{(..*}}” 但它返回“blabla1”“blabla3”


共有2个答案

姚臻
2023-03-14

这有嵌套,所以它不是常规语法。一些正则表达式引擎具有处理大括号匹配的扩展,但通常最好的方法是简单地扫描字符串并在列表中累积输出

罗凯
2023-03-14

您可以使用平衡组来计算和匹配嵌套结构,如下面所示。例如:

(?x) {{ ( (?: [^{}]+ | (?<open>{{) | (?<-open>}}) )* (?(open)(?!)) ) }}
 类似资料:
  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 我试图使用sbt解析器(http://www.scala-sbt.org/0.13/docs/parsing-input.html)解析sbt InputTask的命令行参数,但未能编写与以下伪regex匹配的解析器:

  • 我正在尝试编写一个正则表达式,它将匹配由任意字符串分隔的同一个hashtag。所以 Lorem Ipsum#分子只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum“分子”一直是行业标准的虚拟文本,当时一家不知名的印刷商拿起一个打印盘,将其拼凑成一本“分子”样本书。它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的@

  • 注意:本部分是为v1 API编写的,但这些概念也适用于v2 API。它将在未来版本的v2 API中重新描述。 Envoy的路由匹配过程如下: HTTP请求的头域字段 host 或 :authority 与虚拟主机匹配。 按顺序检查虚拟主机中的每个路由表。如果匹配,则使用该路由并且不再匹配路由。 独立地,依次检查虚拟主机中的每个虚拟集群。如果匹配,则使用虚拟群集,不再进一步匹配集群。 返回 上一级

  • 问题内容: 我正在尝试为Android编写小型gmail客户端作为培训。我从https://developers.google.com/gmail/api/quickstart/android上获取了gmail api指南示例,对其进行了一些修改,以获取带有标题和正文的消息。我将范围设置为并编辑了主要请求功能,如下所示: 但是我总是 我尝试了不同的范围配置,但似乎服务范围始终设置为 问题答案: 这

  • 我和ElasticSearch一起工作。当我执行此查询时: 我得到了我想要的(所有的结果,其中有参考黑莓,但不是Q10)。 但是,我想限制搜索的字段只限于“title”字段。例如,_source文档有标题、正文、标签等,我只想搜索标题。ElasticSearch“匹配”似乎很适合我... 虽然这只成功地搜索了标题,但它仍然返回标题中带有Q10的结果,这与上面的搜索不同。 我正在看比赛文档,但似乎不