如何在正则表达式中模拟负查找



我有以下正则表达式,其中包括对未来的负面展望。不幸的是,我使用的工具不支持正则表达式。所以我想知道是否有可能在不实际使用的情况下实现负面的前瞻性行为。

这是我的正则表达式:

(?<![ABCDEQ]|[|]|wwd)(d+["+-]?)(?!BE|AQ|N)(?:.*)

在这里,它正在使用 Regex101.com 的示例数据:

请参阅 regex101.com 上的表达式

我正在使用一个名为Alteryx的工具。文档表明它使用 Perl,但是,无论出于何种原因,展望都不起作用。

Alteryx 似乎使用 Boost 库来支持其正则表达式,而 Boost 文档说 lookback 表达式必须具有固定长度。 它比PHP(PCRE)更严格,后者允许您在后视中使用交替,只要每个分支都是固定长度的。 但这很容易绕过:只需使用多个回溯:

(?<![ABCDEQ])(?<![)(?<!])(?<!wwd)(d+["+-]?)(?!BE|AQ|N)(?:.*)

该正则表达式在 Boost 驱动的正则表达式测试器中对我有用,而您的则不然。 我会通过在字符集中放置方括号来进一步压缩它:

(?<![][ABCDEQ])(?<!wwd)(d+["+-]?)(?!BE|AQ|N)(?:.*)

当右括号是列出的第一个字符时,它被视为文本,左括号从不特殊(尽管其他一些样式有不同的规则)。

这是更新的演示。

相关内容

  • 没有找到相关文章

最新更新