Regex 同时支持lookarounds和boolean的正则表达式库;及;

Regex 同时支持lookarounds和boolean的正则表达式库;及;,regex,Regex,我需要一个正则表达式程序/库/任何支持布尔和以及lookarounds的东西。我发现的唯一支持布尔“and”的库是dk.brics: 然而,这个库不支持lookarounds,添加支持似乎很重要 当然,有许多库支持lookarounds,但我还没有发现任何库也支持布尔“and” 我很乐意使用任何能够运行正则表达式、库、程序等的工具。理论上,您不能使用否定检查和OR实现来获得与您正在寻找的相同的功能吗?在这种情况下,我知道.Net的正则表达式解析器支持OR和正、负向前看和向后看。要检查某个内容是

我需要一个正则表达式程序/库/任何支持布尔和以及lookarounds的东西。我发现的唯一支持布尔“and”的库是dk.brics:

然而,这个库不支持lookarounds,添加支持似乎很重要

当然,有许多库支持lookarounds,但我还没有发现任何库也支持布尔“and”


我很乐意使用任何能够运行正则表达式、库、程序等的工具。

理论上,您不能使用否定检查和OR实现来获得与您正在寻找的相同的功能吗?在这种情况下,我知道.Net的正则表达式解析器支持OR和正、负向前看和向后看。要检查某个内容是否与A和B匹配,请检查它是否不匹配(不匹配A |不匹配B)。

“and”在正则表达式中很容易实现,您不应该将其作为一项要求。查找lookahead,您可以使用正向前瞻执行“and”:/a&B/=>/(?=a)B/断言即将出现的字符串与a匹配,然后改为与B匹配。因此,它必须同时匹配A和B。我喜欢这个想法,但它似乎只适用于简单的情况。例如,如果我想匹配“一个带a和B的字符串,后跟一个带C&D的字符串”。所以我想要/(.*A.*)和(.*B.*)(.*C.*)和(.*D.*)/但是如果我把它翻译成:/(?=.*A.*)(.*B.*)(?=.*C.*)(.*D.*))/那么它将匹配BCDA,这显然不是我想要的。我错过什么了吗?有没有一种方法可以在更复杂的情况下也使用这种技术?对于这种情况,您可以使用lookback:
/.*B.*(
/(?=a)B)(?在我看来,你的技术与我上面概述的问题相同。我想不出确切的语法,但你上面描述的情况难道不能通过检查前两组的A | B来处理,并验证第二组与第一组不同吗?我意识到这可能是对原始问题的过度简化,所以这种模式可能无法满足您的需要,但我认为它应该解决当前的问题。不幸的是,我不理解您所说的“验证第二组与第一组不同”的意思。您建议我做一些类似于/(?=*a | B*)(*a | B)的事情(