使用正则表达式替换流利的字符串

时间:2018-04-26 10:16:22

标签: ruby regex fluentd

发送日志时,我想替换idpw值,如下所示:

https://m.xxxxx.com/yyyy.xxxx?id=aaaa&pw=cccc
https://m.xxxxx.com/aaaa.xxxx?id=aaaa&pass=cccc

具有不同的值,例如:

https://m.xxxxx.com/yyyy.xxxx?id=*&pw=****
https://m.xxxxx.com/aaaa.xxxx?id=*&pass=****

很难创建插件。是否可以通过使用现有id = aaaaid = ****filter_record_transformer值转换为grep进行转移?是否无法使用gsub的{​​{1}}?

1 个答案:

答案 0 :(得分:0)

"https://m.xxxxx.com/yyyy.xxxx?id=aaaa&pw=cccc".
  gsub(/(?<=id=)[^&]+|(?<=pw=)[^&]+/) { |m| '*' * m.length }
#⇒ "https://m.xxxxx.com/yyyy.xxxx?id=****&pw=****"

我们在此处使用positive lookbehind来完全匹配查询的idpw部分。