我希望有人可以提供一些正则表达式帮助。我正在尝试查找字符串中存在两种模式的实例(我想我是说对了)。
这是我的测试字符串:
{"eventid": 2121, "username":"FRED", "starttime": "1550243080", "newprocessname": "C:\\Windows\\System32\\wbem\\WmiPrvSE.exe", "parentprocessname": "C:\\Windows\\System32\\svchost.exe"}
我希望能够基于一个或多个条件进行搜索。我的问题是提供多个条件时。例如,如果用户名好或newprocessname好,则以下内容似乎匹配,而我希望仅当两者都好时才匹配。
("username"\s*:\s*"(.*?)FRED(.*?)")|("newprocessname"\s*:\s*"(.*?)WINDOWS(.*?)")
我认为我的模式是正确的,但是只有两个模式都匹配时才如何返回结果?
我希望我能解释这个正确的说法?
谢谢!
乔恩
答案 0 :(得分:0)
如果您使用的支持正则表达式的正则表达式库可以使用此正则表达式:
^(?=.*"username"\s*:\s*"([^"]*)FRED([^"]*)")(?=.*"newprocessname"\s*:\s*"([^"]*)WINDOWS([^"]*)")
它同时查找username
和newprocessname
标签(因为前行不占用任何字符)。请注意,您需要将正则表达式中的.*?
更改为[^"]*
,否则您可以将文本与字符串进一步匹配,而不是与标记名关联的实际值。