我有以下正则表达式,其中包含负面展望。不幸的是,我使用的工具不支持正则表达式。所以我想知道是否有可能在不实际使用的情况下实现负面的前瞻性行为。
这是我的正则表达式:
(?<![ABCDEQ]|\[|\]|\w\w\d)(\d+["+-]?)(?!BE|AQ|N)(?:.*)
它正在使用 Regex101.com 上的示例数据:
我正在使用一个名为 Alteryx 的工具。文档表明它使用 Perl,但是,无论出于何种原因,向前看都不起作用。
我有以下正则表达式,其中包含负面展望。不幸的是,我使用的工具不支持正则表达式。所以我想知道是否有可能在不实际使用的情况下实现负面的前瞻性行为。
这是我的正则表达式:
(?<![ABCDEQ]|\[|\]|\w\w\d)(\d+["+-]?)(?!BE|AQ|N)(?:.*)
它正在使用 Regex101.com 上的示例数据:
我正在使用一个名为 Alteryx 的工具。文档表明它使用 Perl,但是,无论出于何种原因,向前看都不起作用。
Alteryx 似乎使用 Boost 库来支持其正则表达式,而Boost 文档说后向表达式必须具有固定长度。它比 PHP (PCRE) 更具限制性,只要每个分支都是固定长度的,它就允许您在后视中使用交替。但这很容易解决:只需使用多个lookbehinds:
(?<![ABCDEQ])(?<!\[)(?<!\])(?<!\w\w\d)(\d+["+-]?)(?!BE|AQ|N)(?:.*)
该正则表达式在 Boost 驱动的正则表达式测试器中为我工作,而你的则不行。我会通过在字符集中放置方括号来进一步压缩它:
(?<![][ABCDEQ])(?<!\w\w\d)(\d+["+-]?)(?!BE|AQ|N)(?:.*)
当右括号是列出的第一个字符时,它被视为文字,左括号从不特殊(尽管其他一些风格有不同的规则)。
这是更新的演示。