【问题标题】:Java regex with a positive look behind of a negative look aheadJava 正则表达式,正面展望,负面展望
【发布时间】:2023-04-05 15:59:01
【问题描述】:

我试图从这种字符串ou=persons,ou=(.*),dc=company,dc=org 中提取最后一个字符串,前面是一个逗号后面没有(.*)。在最后一种情况下,这应该是dc=company,dc=org

从正则表达式来看,这似乎是一个积极的看法,而不是一个消极的看法。

所以我已经实现了这个正则表达式:(?<=(,(?!.*\Q(.*)\E))).*,但它返回 ,dc=company,dc=org 并带有昏迷。我想要没有昏迷的同样的东西。我做错了什么?

【问题讨论】:

    标签: java regex regex-lookarounds


    【解决方案1】:

    逗号出现是因为捕获组包含它。

    您可以使用(?:) 使外部捕获组不捕获

    (?<=(?:,(?!.*\Q(.*)\E))).*
    

    【讨论】:

    • 谢谢。它有效,所以我接受你的回答。如您所见,我自己以另一种方式解决了我的问题,在捕获组方面实现了相同的推理。
    • 我更喜欢你的回答:)
    【解决方案2】:

    看来我已经单独解决了我的问题,删除了负面展望周围的捕获组。它给出了以下正则表达式:(?&lt;=,(?!.*\Q(.*)\E)).*

    它与在环视中捕获组的行为相关联,如下所述:http://www.regular-expressions.info/lookaround.html in part Lookaround Is Atomic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多