正则表达式删除 -i- 之后的所有内容(使用 -i-)

Regex to remove everything after -i- (with -i-)

我正在尝试为我的问题找到解决方案。

 Input: prd-abcd-efgh-i-0dflnk55f5d45df

 Output: prd-abcd-efgh

Tried Splunk Query : index=aws-* (host=prd-abcd-efgh*) | rex field=host "^(?<host>[^.]+)"| dedup host  | stats count by host,methodPath

我想删除“-i-”之后的所有内容,使用简单 regex.I 尝试使用此处列出的正则表达式“^(?[^.]+)”

https://answers.splunk.com/answers/77101/extracting-selected-hosts-with-regex-regex-hosts-with-exceptions.html

请帮我解决一下

我不了解 Splunk。但通常的做法是匹配您不需要的部分并将其替换为空字符串。

这样做的正则表达式可以是:

-i-.*

然后用空字符串替换匹配项。

像这样简单的东西应该可以工作:

([a-z-]+)-i-.+

第一个捕获组将 return 仅 -i-.

之前的部分

replace(host, "(?<=-i-).*", "")

此处示例:https://regex101.com/r/blcCcQ/2

这个(?<=-i-)是一个lookbehind