正则表达式查找带引号,分号和等于的值

时间:2018-08-28 19:56:49

标签: regex linux unix regex-negation

我的查询很简单,对REGEX的关注也很简单而且很新。 我正在尝试用双引号将记录匹配。

Example :

This is my sample Record :

"eventType":"delete","ServerSerial":"1556562030","ServerName":"XYZ_U_O","deletedat":"2018-08-24 17:56:39.974"}


{"eventType":"delete","ServerSerial":"0","ServerName":"","deletedat":"2018-08-24 17:56:34.944"}

第一条记录是具有Serverserial和Server Name的有效记录,但是第二条记录无效,服务器序列号为0,服务器名为空。

我想匹配第二条记录以消除记录。 我确实尝试过,它与两个记录都匹配。

**^(?=.*?\bdelete\b)(?=.*?\bServerName\b).*$** 

凭我的专业知识,我做不到。谁能帮我解决这个难题

2 个答案:

答案 0 :(得分:0)

这将匹配服务器名称为""或服务器序列为0的任何行

.*(?<=ServerSerial":")0(?=").*|.*(?<=ServerName":")(?=").*

Demo

答案 1 :(得分:0)

要将其添加为完整答案。

  • 只需搜索有问题的字符串的固定部分并将其用作前锚,
  • 然后匹配直到第一个大括号。
  • 根据要求,我添加了一个可选的逗号(如果不希望出现的数据显示在末尾)
{"eventType":"delete","ServerSerial":"0","ServerName":""[^}]+},?

Regex Demo