如何使用gsub将包含下划线的部分字符串转换为logstash中的括号

Posted

技术标签:

【中文标题】如何使用gsub将包含下划线的部分字符串转换为logstash中的括号【英文标题】:How to convert part of a string that includes underscores to brackets in logstash with gsub 【发布时间】:2022-01-21 08:18:58 【问题描述】:

我想转换,例如 你好_1_.再见 到 你好[1]。再见 注意[1],即括号内只包含数字

我从这样的东西开始,但没有用..

filter 
  mutate 
    gsub => ["String", "*_\D_.*", "*[\D].*"] //Note that String here could be Hello_1_.Bye, Hello_2_.Bye etc.
  
 

但出现此错误

:exception=>#<RegexpError: target of repeat operator is not specified: /*_\D_*/>

感谢您的帮助

【问题讨论】:

你可以使用"Hello_12_.Bye".sub(/_(\d+)_/) "[#$1]" #=&gt; "Hello[12].Bye" @CarySwoveland gsub 是 Logstash 配置文件行话中的 setting。在这种特殊情况下,它是mutate 过滤器模块的the gsub setting。 【参考方案1】:

我建议使用这个版本:

filter 
  mutate 
    gsub => ["Hello_1_.Bye", "([^_]+)_(\d+)_(\.\w+)", "\1[\2]\3"]
  

这是一个regex demo,表明替换正在工作。

【讨论】:

以上是关于如何使用gsub将包含下划线的部分字符串转换为logstash中的括号的主要内容,如果未能解决你的问题,请参考以下文章

将多个整数列读取为字符串,尝试 gsub 并转换回整数

在 R 中的一个 gsub() 或 chartr() 语句中替换多个字符串?

对于R gsub()中字符串内的索引的循环

使用 gsub 从字符串中删除模式

将字符串转换为 JSON 有效格式

将字符串表示的数组转换为数组