如何正则表达式匹配对内的对

2024-01-01

我的问题相当简单,即使它的目的相当复杂。我将使用一个简单的例子:

AzzAyyAxxxxByyBzzB

所以通常我想要得到之间的一切A and B。然而,由于第一个之间的一些内容A和最后一个B(一对)包含额外的AB对我需要推迟比赛的结束。 (不确定最后一部分是否有意义)。

所以我正在寻找一些正则表达式,它可以让我得到以下输出:

Match 1
  Group 1: AzzAyyAxxxxByyBzzB
  Group 2: zzAyyAxxxxByyBzz

然后我再匹配一下得到:

Match 2
  Group 1: AyyAxxxxByyB
  Group 2: yyAxxxxByy

然后最后再次得到:

Match 3
  Group 1: AxxxxB
  Group 2: xxxx

显然如果我尝试(A(.*?)B)就整个输入而言,我得到:

Match x
  Group 1: AzzAyyAxxxxB
  Group 2: zzAyyAxxxx

这不是我要找的:)

我希望这是有道理的。我知道如果这不能在正则表达式中完成,但我想在我放弃它并尝试其他方法之前我会问你们中的一些正则表达式向导。谢谢!

附加信息:

我正在从事的项目是用Java 编写的。

另一个问题是我正在解析一个可能包含以下内容的文档:

AzzAyyAxxxxByyBzzB
Here is some unrelated stuff
AzzAyyAxxxxByyBzzB
AzzzBxxArrrBAssssB

还有顶部AB成对需要与底部分开AB pairs


您通过使用使您的正则表达式明确不贪婪?。只需将其省略,正则表达式将在匹配之前消耗尽可能多的内容B:

(A(.*)B)

然而,一般来说,嵌套结构超出了正则表达式的范围。在这样的情况下:

AxxxByyyAzzzB

您现在还可以从第一个开始匹配A到最后B。如果这在您的场景中是可能的,您最好自己逐个字符地遍历字符串并计数As and B找出哪些属于一起。

EDIT:

现在您已经更新了问题并且我们在评论中解决了这一问题,您do存在多个连续对的问题。在这种情况下,使用不支持递归的正则表达式引擎无法完成此操作。

但是,您可以切换到从内到外的匹配。

A([^AB]*)B

这只会得到最里面的对,因为不可能有A nor a B分隔符之间。如果找到,您可以删除该对并继续下一场比赛。

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

如何正则表达式匹配对内的对 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 与有效正则表达式匹配的正则表达式

    是否存在与有效正则表达式匹配的正则表达式 我知道正则表达式有多种风格 其中一种就可以了 是否存在与有效正则表达式匹配的正则表达式 根据定义 它非常简单 No 所有正则表达式的语言是no regular语言 只需查看嵌套括号 因此不可能有re
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其

随机推荐

  • 如何设置cassandra读写一致性

    我找不到这方面的文档 我知道cqlsh中有一致性命令 但是读一致性和写一致性没有区别 如何为读取和写入设置不同的一致性级别 此外 还提到了 默认 一致性级别 默认设置在哪里 它是用于读还是写 如何为读取和写入设置不同的一致性级别 如果您只想
  • struts2 + hibernate3 + jasper-report 5.0 ----- 得到空白报告

    我创建了一个应用程序 它使用 jasper report 5 0 struts2 和 hibernate 打印报告 jasper报告使用hql 该应用程序工作正常 但问题是我得到空白报告在浏览器中 当我触发 struts 操作时 但是当我在
  • VSCode 语法突出显示不适用于 Vue / Vetur

    在过去一周左右的时间里 我使用的每个 VUE 文件都没有语法突出显示 我通常有扩展名Vetur帮助对 VUE 文件进行语法突出显示和其他调整 到目前为止我尝试过的事情 卸载 重新安装 Vetur 更改 VScode 中的文件关联 确保 vu
  • Moose 结构类型

    我想在 Moose 中创建一个结构化类型 可以用作另一个 Moose 属性的类型 例如 我希望能够创建一个name有自己的属性value and error属性 因此 我想知道实现这一目标的最佳方法 我通过定义一个简单的 Moose 类来表
  • 将给定的十进制数转换为二进制数并计算连续的 1 并显示

    问题 将给定的十进制数转换为二进制数并统计连续的1并显示 示例案例1 5的二进制表示为101 因此连续1的最大数量为1 示例案例2 13 的二进制表示为 1101 因此连续 1 的最大数量为 2 解决方案 bin python3 impor
  • 为什么将 1 添加到 byte.MaxValue 会导致 256 而不是溢出[重复]

    这个问题在这里已经有答案了 我在 C 中有一段简单的代码 用于在向类型的 MaxValue 添加 1 时显示溢出错误 using System using System Collections Generic using System Li
  • dart 控制台应用程序中的 Ctrl+c

    Is there a way to catch CTRL C in dart console application For example press CTRL C to send clean closing packet to web
  • Ansible 循环遍历模板中的字母范围

    我正在尝试生成一个 Ansible 模板 该模板按字母顺序而不是数字顺序递增 有没有类似的功能range x 那可以帮助我吗 伪代码示例 for letter in range a d letter endfor 预期产出 a b c d
  • Prolog if 语句

    我正在尝试实现一个按如下方式工作的谓词 pred do this always if statement do this only when if statement is true do this also always independ
  • 设计数据仓库时使用临时数据库的好处

    我正在设计数据仓库架构 在探索从生产中提取数据并将其放入数据仓库的各种选项时 我遇到了许多文章 主要建议以下两种方法 生产数据库 gt 数据仓库 星型模式 gt OLAP立方体 生产数据库 gt 暂存数据库 gt 数据仓库 星型模式 gt
  • ViewChild 返回“未定义”-Angular2

    我试图通过按父组件上的按钮来执行子组件的功能 但由于某种原因它未定义 Parent com1 html
  • 如何查看Spark使用的核心数?

    I have spark cores max set to 24 3 个工作节点 但是如果我进入我的工作节点并看到只有一个进程 command Java 正在运行 该进程会消耗内存和 CPU 我怀疑它没有使用全部 8 个核心 在m2 4x
  • uiimageview isanimating 的替代方案

    我有一个代码在 UIImageView isAnimating 为 false 后执行一些操作 但有趣的是它永远不会出错 它总是处于 是 状态 iPhone 的 UIImageView isAnimating 返回错误 https stac
  • 如何在android MVP中应用组合?

    最近我接手了一个基于 MVP 构建的 android 项目 虽然简单的屏幕非常简单且易于阅读和维护 但应用程序的更复杂的部分却不然 多个继承级别导致我在类之间切换数天 试图找出信息流实际上是如何工作的 以下是问题较多的层次结构的一个示例 既
  • 嗅探 LPT 流量

    我需要拦截 LPT 输出流量 经过几个小时的研究 我开始明白 做到这一点的唯一方法是编写内核模式驱动程序 更准确地说是 过滤驱动程序 我已经下载了 WDK 但是术语和大量的驱动程序类型有点让人不知所措 我基本上是想了解什么kind我应该写的
  • 可移植 SQL 来确定表是否存在?

    是否有一种可移植的方法来确定数据库表是否已存在 便携的 我不这么认为 也许你能得到的最接近的是 select from table 如果表不存在 这将返回错误 table
  • 如何将 ubyte[] 解码为指定的编码?

    问题是 在运行时设置编码时如何解析文件 编码可以是 utf 8 utf 16 latin1 or other 目标是将 ubyte 从所选编码转换为字符串 因为当您使用 std stdio File byChunk 或 std mmFile
  • 如何使用nestjs redis微服务?

    我正在学习nestjs微服务 我可以使用什么命令 const pattern cmd get this client send
  • SendMessage 总是返回零?

    为什么即使消息发送成功 Windows SendMessage 也总是返回 0 是否有办法使用 SendMessage 检查消息传递失败 EDIT 忘了提及我在 C DLL 中使用 SendMessage LRESULT result Se
  • 如何正则表达式匹配对内的对

    我的问题相当简单 即使它的目的相当复杂 我将使用一个简单的例子 AzzAyyAxxxxByyBzzB 所以通常我想要得到之间的一切A and B 然而 由于第一个之间的一些内容A和最后一个B 一对 包含额外的AB对我需要推迟比赛的结束 不确