从日志行中查找键值对,可以引用,也可以包含引号



寻找一个正则表达式来从日志行(准确地说是exim(捕获所有带引号的键值对。但是,该值也可以包含引号

尝试了其他 SO 问题的多个示例(例如,正则表达式以匹配值在引号或撇号中的键值对(,一旦它们点击内部引号字符,所有示例都失败

了测试数据,所有有效示例:

A="value" F="something here" T="This is the value"
F="something "here"" T="The value's here" X=ignore
F="something's here" T="He said "This is also the value""

您可以使用此正则表达式来匹配所有单独的键值对:

(?<key>[^s=]+)=(?<value>"[^"\]*(?:\.[^"\]*)*"|[^s"]+)

正则表达式演示

正则表达式详细信息:

  • (?<key>[^s=]+):匹配 1 个或多个未=和空格的字符,在组中捕获"key"
  • =:匹配文字=
  • (?<value>: 启动捕获组"value"
    • "[^"\]*(?:\.[^"\]*)*":匹配带引号的字符串,忽略"..."内的所有转义字符
    • |: 或
    • [^s"]+:匹配 1 个或多个不=和空格的字符
  • ):结束捕获组"value"

相关内容

最新更新