Java正则表达式带有积极面貌,背后是负面展望

时间:2013-07-23 15:23:32

标签: java regex regex-lookarounds

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

看看正则表达式,这似乎是一个积极的背后(前面)负面展望。

所以我已经实现了这个正则表达式:(?<=(,(?!.*\Q(.*)\E))).*,但它会使昏迷返回,dc=company,dc=org。我希望没有昏迷的同样的事情。我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

您可以使用(?:)

使外部捕获组无法捕获
(?<=(?:,(?!.*\Q(.*)\E))).*

答案 1 :(得分:2)

似乎我已经单独解决了我的问题,取消了前方的负面看法周围的捕获组。它提供了以下正则表达式:(?<=,(?!.*\Q(.*)\E)).*

它与周围环境中捕获组的行为相关联,如下所示: Lookaround Is Atomic 部分中的http://www.regular-expressions.info/lookaround.html