【发布时间】:2020-05-05 18:06:57
【问题描述】:
我有一个关于正则表达式的问题,这里是我的文字:
1 200 file:test01.txt, action:read, User:dummy
2 201 file:test01.txt, action:write, User:dummy
3 202 file:unknown, keepalive , User:dummy
4 450 file:test01.txt, action:read, User:dummy
5 500 file:test01.txt, action:read, User:dummy
6 201 profiles, action:reload, User:dummy
我想匹配所有行,其中:
- 第二列在 20[012]
- 动作未读
- 动作不存在
所以我会匹配:
2 201 file:test01.txt, action:write, User:dummy
3 202 file:unknown, keepalive , User:dummy
6 201 profiles, action:reload, User:dummy
我正在寻找一种获取行的方法:操作与读取不同以及操作不出现的位置
我尝试了很多方法都没有成功,这是我最后一次失败,第一行幸存下来......
^\d+\s+(?<code>(20[012])).*(action:(?<!read))?
https://regex101.com/r/HGESxR/1
有什么提示吗?
谢谢 马塞洛
【问题讨论】:
-
因为您说“未读操作”是指“未读操作”,所以我最初认为您的意思是“未执行操作”表示“未执行操作”,但我没有看到你的意思是“行动:”不存在。你需要编辑来解决这个问题。
-
假设这是你的意图,我建议你说,“action:”,如果存在,后面不跟“read”。
标签: regex pcre regex-group