正则表达式,匹配除这些字符串之外的任何内容

Regular expression, match anything but these strings

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

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

上面的正则表达式是我目前所拥有的。我期待负面前瞻以防止它匹配流程、流程、资产或资产。然而,这些前瞻之后的 [^/]+ 似乎可以继续匹配这些字符串。导致此正则表达式有时会覆盖我为接受这些字符串而编写的其他正则表达式

使正则表达式匹配任何字符串的正确语法是什么,而不是在否定前瞻中指定的字符串?

谢谢!

负前瞻不消耗任何正在搜索的字符串。当你想要多个否定前瞻时,不需要用 | (OR) 将它们分开。试试这个:

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

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

Live test.