正则表达式从字符串中提取单词
Regex extract word from string
我想从这个字符串中过滤出以下单词 APPLE
:
"[BANANA => APPLE]"
我尝试使用 RegEx (?<=\> ).+?(?=])
来做到这一点,但这并没有解决我的问题。
编辑: 我在 Grok Debugger 中尝试这个。
%{TO:client}
.
TO (?<=\> ).+?(?=])
但没有向我显示任何匹配项。
这就是您要找的吗?匹配 =>
和 ]
之间的所有内容
=> (.+?)\]
你的话会在第一组。当然还有 space 可以通过 lookaheads 等来改进它
我建议使用 https://regex101.com/ 来调试和验证您的正则表达式。
Grok uses an Oniguruma regex engine,通常在命名组的帮助下创建字段:
you can use the Oniguruma syntax for named capture which will let you match a piece of text and save it as a field
您应该使用具有类似
模式的命名捕获组
=>\s*(?<client>[^\]]+)
它将匹配 =>
, 0+ 个空格,然后将捕获到 "client" 组(然后将创建 client
字段)一个或多个 [= 以外的字符13=].
我想从这个字符串中过滤出以下单词 APPLE
:
"[BANANA => APPLE]"
我尝试使用 RegEx (?<=\> ).+?(?=])
来做到这一点,但这并没有解决我的问题。
编辑: 我在 Grok Debugger 中尝试这个。
%{TO:client}
.
TO (?<=\> ).+?(?=])
但没有向我显示任何匹配项。
这就是您要找的吗?匹配 =>
和 ]
=> (.+?)\]
你的话会在第一组。当然还有 space 可以通过 lookaheads 等来改进它
我建议使用 https://regex101.com/ 来调试和验证您的正则表达式。
Grok uses an Oniguruma regex engine,通常在命名组的帮助下创建字段:
you can use the Oniguruma syntax for named capture which will let you match a piece of text and save it as a field
您应该使用具有类似
模式的命名捕获组=>\s*(?<client>[^\]]+)
它将匹配 =>
, 0+ 个空格,然后将捕获到 "client" 组(然后将创建 client
字段)一个或多个 [= 以外的字符13=].