正则表达式从字符串中提取单词

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=].