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

如何在正则表达式中忽略正向/负向的lookback/lookahead组?[副本]

萧韬
2023-03-14

是否有一种简单的方法可以使用另一个正则表达式(考虑括号内的情况)从正则表达式中删除正/负lookback/lookahead组?

示例源表达式:A(?)?

  • (?

到目前为止,我做了表达式\(\\

我想过替换(?

我试图避免用一堆if-else逻辑循环每个字符。

注意:我在Java(Kotlin)中使用这些正则表达式,并使用“containsMatchIn”方法将源表达式与实际文本匹配。


共有2个答案

欧阳子石
2023-03-14

我终于找到了解决办法。。。不得不做一些开箱思考:——)

下面的代码实现了这一点,其行为基本上类似于PERL的注释组构造(?#…)

使用字符串替换:

表达式=表达式。替换(“(?)?

或使用正则表达式替换:

表达式=正则表达式(“”)(?

闾丘朗
2023-03-14

您将不得不使用与PERL兼容的正则表达式,而不是标准Java,因为它们不支持递归。试试这个:\(\?

  • \(\?

保存的:https://regex101.com/r/mjMoyz/1.

 类似资料:
  • 我有以下示例文本 当我应用以下正则表达式时,当我打印第一个捕获组时,我期望以下输出 但是我最终得到的是 在我看来,由于某种原因,否定的先行部分被忽略了,因此正则表达式与整个字符串匹配。 真正让我困惑的是,积极的前瞻性正如我所期望的那样工作。例如,使用在打印第一个捕获组时返回以下内容 这是有道理的,所以我真的很困惑为什么消极的前瞻性没有正常运作。

  • 我定义的正则表达式对所有测试字符串都很好,除了当捕获组顺序被交换时(2016 Fall或16F或18SU),正则表达式中是否有一种方法可以忽略正则表达式的捕获组顺序

  • 我有一个将大写/小写字符串转换为大写字符串的正则表达式。问题是,在我的国家,名字中有特殊字符是很正常的,这让我的反应很不舒服 如果我对“JOAO CARLOS NOBREGA”使用此方法,则返回“JOAO CARLOS NOBREGA”。但如果我将此方法用于“JOÃO CARLOS NOBREGA”,则返回“JOÃO CARLOS NOBREGA”。我如何解决这个问题?

  • 我不知道如何表达这个问题的标题,但想象一下我有以下字符串: 我想要一个正则表达式,它允许我获得和 我目前拥有的正则表达式是。 这个正则表达式的问题是,它得到了和。这是因为它与的括号匹配。但我需要一个正则表达式,它忽略4的括号,只匹配外部的,如果这有意义的话。 编辑:为了更深入地了解这个问题,这正是我所期望的字符串类型:

  • 我的目标是以优雅的方式将几个正则表达式模式匹配到同一个字符串。我知道有必要使用组来进行这种类型的正则表达式匹配,并且为了使用下面的匹配功能,我需要在语句中显式捕获这些组中的每一个(例如,两个组在语句中需要两个)。 现在,我有以下几点考虑: 从下划线的使用中可以明显看出,我不关心捕捉模式的特定组,只关心任何第一个匹配。 我的实际模式非常复杂,因此为了可管理性,我更愿意将它们保留为单独的对象,而不是将

  • 问题内容: 我必须先匹配一个数字,然后再匹配14次。然后,我来到了regexstor.net/tester中的以下正则表达式: 编辑 当我将其粘贴到代码中时,包括正确的反斜杠: 我已经用来替换了反向引用,该反向引用用于替换Java中的匹配项。 然后我意识到这是行不通的。在Java中,当需要在REGEX中向后引用匹配项时,必须使用,但是要替换它时,运算符为。 我的问题是:为什么? 问题答案: 在Ja