regex - 流利的正则表达式:将多个值分组

标签 regex elasticsearch fluentd

我正在尝试从以下字符串中剪出一个字段:
|null|23|2017-07-11T19:03:40.511|Test|PageUnque#MasterCache|123450000||
解析字符串后,结果应为:
type: null id: 23 message: 2017-07-11T19:03:40.511|Test|PageUnque#MasterCache code: 123450000
我尝试使用下面的正则表达式,但是没有按预期工作。
^\|(?<type>.*?)\|(?<id>.*?)\|(?<message>.[^\#]*)\|(?<code>.*?)\|$

最佳答案

如果希望在每个字段中有更多示例或更多特定信息,这将有所帮助。我用正则表达式看到的主要问题是您似乎想捕获“2017-07-11T19:03:40.511 | Test | PageUnque#MasterCache”,但是在消息捕获组中不允许使用“#”字符

(?<message>.[^\#]*)

相反,这就是我所做的。我会注意到,我假设代码将仅由数字组成。 https://regex101.com/r/urC2rj/1
^\|(?<type>.*?)\|(?<id>.*?)\|(?<message>.*)\|(?<code>[0-9]+)\|\|$

我没有在正则表达式中更改它,而是使用“。*?”可能会有点冒险,因为它允许您的正则表达式捕获很多东西。根据您的数据,它可能重要也可能不重要。

关于regex - 流利的正则表达式:将多个值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45048131/

相关文章:

java - 除特定情况外如何匹配单个字符

azure - 将节点 azure 添加到 Elasticsearch

elasticsearch - Kibana 垂直条形图在 X 轴的哪个位置我有值总和的桶?

elasticsearch - Istio fluentd 适配器以字节形式发送 IP 地址

docker - 如何将多行 docker 日志组合成一个流畅事件

php - 正则表达式提取标签之间的文本,但不提取标签

php - 正则表达式 - 阻止垃圾邮件

elasticsearch - Elasticsearch copy_to 字段未填充

docker - 以非根身份运行 Fluentd Docker 镜像

regex - 使用 Redirect 与 RewriteRule 的速度影响