正则表达式,匹配除了这些字符串之外

时间:2016-01-28 10:50:52

标签: regex regex-negation splunk negative-lookahead

在Splunk中我有许多字段提取用于从uri词干中提取值。我有一些匹配特定模式,我现在想要另一个匹配除了这些之外的正则表达式。

^/SiteName/[^/]*/(?<a_request_type>((?!Process)|(?!process)|(?!Assets)|(?!assets))[^/]+)

上面的正则表达式是我到目前为止所拥有的。我期待负面的预测,以防止它匹配流程,流程,资产或资产。然而,看起来这些前瞻之后的[^ /] +可以继续并且无论如何都匹配这些字符串。导致这个正则表达式有时会覆盖我写的接受这些字符串的其他正则表达式

使正则表达式匹配任何字符串的正确语法是什么,除了负向前瞻中指定的字符串外?

谢谢!

1 个答案:

答案 0 :(得分:3)

否定前瞻不消耗任何被搜索的字符串。如果需要多个否定前瞻,则无需将它们与|(OR)分开。试试这个:

^/SiteName/[^/]*/(?<a_request_type>((?![Pp]rocess)(?![Aa]ssets))[^/]+)

请注意,我已合并您的前瞻([Pp]rocess[Aa]ssets),以使正则表达式更简洁。

Live test