正则表达式 (Notepad++) 在 CSV 中查找所有特定列不是 0 或 00 的日志文件

Regular Expression (Notepad++) find all in CSV like log file where a particular column is NOT 0 or 00

我正在尝试使用 Notepad++ RegEx 功能搜索几千个文件以匹配特定模式。这些文件包含记录的数据,其中感兴趣的行以 "LOG:" 开头,后跟逗号分隔的数据。在这些行中,我有兴趣找到特定列不等于“0”或“00”的行。

示例数据集。我对第 5 列感兴趣,如 bold 所示:

LOG:69369,1,30,40,80,06,1
LOG:69369,1,30,40,C0,06,1
POS:69453,69576034,-19244227,1,0
LOG:69405,2,30,40,00,06,2
POS:69333,69576024,-19244235,1,0
LOG:69405,2,30,40,C0,06,2

首先,我有一个相反的表达式,即仅查找第 5 列等于“0”或“00”的那些行:

^(LOG:).*,.*,.*,.*,((0)|(00)),.*$

如何更改此设置以查找第 5 列不是“0”或“00”的所有 "LOG:" 行(在此示例中,我想匹配第一行、第二行和最后一行)?

使用基于负前瞻的正则表达式。

^(LOG:)[^,]*,[^,]*,[^,]*,[^,]*,(?!00?(?:,|$))([^,]*)

DEMO

where a certain column does not equal "0" or "00"

您可以使用以下通用正则表达式(如果您想检查 nth 列,请将 4 替换为 n-1):

^(?:LOG:)(?:[^,]*,){4}(?!00?\b)([^,]*).*$

DEMO

^LOG:(?:[^,]*,){4}\K(?!0+,)([^,]*)

您可以尝试 this.See 演示。

https://regex101.com/r/cB3eE4/2