大括号内内容的正则表达式

2024-02-12

是否有正则表达式来匹配大括号内的内容。例如以下内容:

d = {'key': {'a': [1,2,3]}}

我想要匹配{'key': {'a': [1,2,3]}} and {'a': [1,2,3]}, 但不是{'键':{'a':[1,2,3]}


在经典正则表达式中,这是不可能的 - DFA 无法解析嵌套对。

有多种方法可以使用扩展正则表达式来实现此目的,例如某些正则表达式引擎(例如 Perl 正则表达式)中允许的递归表达式,但它们并不总是很好。 (PHP 太多提供 Perl 版本:/\{(?:[^{}]+|(?R))*\}/(?R)选项是递归匹配。)

不过,您不一定需要正则表达式来执行此类操作。您可以简单地通过遍历列表并保留一堆开括号(以及它们出现的位置)来完成此操作。然后,每当您看到一个左大括号时,您就将其位置推入堆栈,并且每当您看到一个右大括号时,您就会从堆栈中弹出最近看到的左大括号,并使用它的位置加上当前位置作为子字符串的边界这将成为您的比赛之一。重复直到到达字符串的末尾。

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

大括号内内容的正则表达式 的相关文章

  • java regex 屏蔽列表中的所有元素,最后 4 个字符可见

    我有一个字母数字字符串列表 如下所示 nG5wnyPVNxS6PbbDNNbRsK5zanG94Et6Q4y74 GgQoDWqP7KtxXeePyyebu5EnNp8XxPC1odeNv GgQoDWqP7KtxXeePyyebu5EnN
  • 如何让“grep -zoP”单独显示每个匹配项?

    我有一个此表格的文件 X this is the first match blabla X this is the second match and here we have some fluff 我想提取 X 之后和相同标记之间出现的所有
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包
  • 多行 C# 正则表达式在空行后匹配

    我正在寻找一个多行正则表达式 它将匹配空行后出现的情况 例如 给定下面的示例电子邮件 我想匹配 发件人 Alex From s 可以匹配任何 From 行 但我希望它仅限于正文中的行 第一个空白行之后的任何行 Received from a
  • 使用 Python 从网站下载所有 pdf 文件

    我遵循了几个在线指南 试图构建一个可以识别并从网站下载所有 pdf 的脚本 从而避免我手动执行此操作 到目前为止 这是我的代码 from urllib import request from bs4 import BeautifulSoup
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 如何使用 PHP 从内容中查找 URL?

    需要一个简单的 preg match 它将在内容中查找 c aspx 不带引号 如果找到 它将返回整个 url 举个例子 content div 4 a href m c aspx mt 01 9310ba801f1255e02e411d8
  • 如何从 pandas 数据框中的列中删除字符串值

    我正在尝试编写一些代码 以逗号分隔数据帧列中的字符串 因此它成为一个列表 并从该列表中删除某个字符串 如果存在 删除不需要的字符串后 我想再次以逗号加入列表元素 我的数据框如下所示 df Column1 Column2 0 a a b c
  • 如何在正则表达式中输入“:”(“冒号”)?

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

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • 什么是仅匹配空字符串的正则表达式?

    有很多关于正则表达式的帖子来匹配潜在地空字符串 但我找不到任何提供正则表达式的字符串only匹配一个空字符串 我知道 将匹配任何行的开头并且 将匹配任何行的结尾以及字符串的结尾 像这样 匹配的内容远不止空字符串 如 n foobar n n
  • 具有连字符的 Oracle 正则表达式在 Windows 上给出的结果与在 Unix 上不同

    我有以下带有正则表达式的查询 select REGEXP REPLACE TEST 3304 V2 lt gt as REG from dual 当通过 SQL Plus 在Windows机器返回以下内容 SQL gt select REG
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • 正则表达式查找字符串中的整数和小数

    我有一个像这样的字符串 str1 12 ounces str2 1 5 ounces chopped 我想从字符串中获取金额 无论它是否是小数 12 或 1 5 然后获取紧邻的前一个测量值 盎司 我能够使用一个非常基本的正则表达式来获取测量
  • 删除字符串末尾的句点和数字

    如何删除尾随句点 后面紧跟一个数字 长度为一位或两位数字 例子 z lt c awe p 56 red 45 ted 5 you 88 tom 我只想删除 45和 5 你只需要一个简单的正则表达式 z new gsub 0 9 z 一些评论
  • 为什么我的 javascript regex.test() 给出交替结果[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 正则表达式返回 true 然后 false 然后 true 等等 https stackoverflow com questions 2630418 javascript reg
  • Python 非贪婪正则表达式

    我如何制作一个像这样的Python正则表达式 这样 给定 a b c d e 蟒蛇匹配 b 代替 b c d 我知道我可以使用 代替 但我正在寻找一种更通用的解决方案 使我的正则表达式更加干净 有没有办法告诉python 嘿 尽快匹配这个
  • netsh 结果到 PowerShell 对象

    我正在尝试与NETSH https ss64 com nt netsh html来自 PowerShell 我想看到这个命令的结果 例如一个对象 但是netsh返回一个字符串 netsh wlan show hostednetwork Ge

随机推荐