Regex 模式匹配多个单词模式

Regex 模式匹配多个单词模式,regex,Regex,我希望有人能帮我做一些正则表达式。我正在尝试寻找一个字符串中存在两种模式的实例(我想我说得对) 这是我的测试字符串: {"eventid": 2121, "username":"FRED", "starttime": "1550243080", "newprocessname": "C:\\Windows\\System32\\wbem\\WmiPrvSE.exe", "parentprocessname": "C:\\Windows\\System32\\svchost.exe"} 我希望能

我希望有人能帮我做一些正则表达式。我正在尝试寻找一个字符串中存在两种模式的实例(我想我说得对)

这是我的测试字符串:

{"eventid": 2121, "username":"FRED", "starttime": "1550243080", "newprocessname": "C:\\Windows\\System32\\wbem\\WmiPrvSE.exe", "parentprocessname": "C:\\Windows\\System32\\svchost.exe"}
我希望能够根据一个或多个条件进行搜索。我的问题是当提供多个标准时。例如,如果username是good或newprocessname是good,那么下面的内容似乎匹配,而我希望只有当两者都是good时,它才匹配

("username"\s*:\s*"(.*?)FRED(.*?)")|("newprocessname"\s*:\s*"(.*?)WINDOWS(.*?)")
我认为我的模式是正确的,但是如果两种模式都匹配,我如何返回结果呢

我希望我的解释是正确的

谢谢大家!


Jon

如果您使用的是支持lookaheads的正则表达式库,则可以使用此正则表达式:

^(?=.*"username"\s*:\s*"([^"]*)FRED([^"]*)")(?=.*"newprocessname"\s*:\s*"([^"]*)WINDOWS([^"]*)")
它同时查找
username
newprocessname
标记(因为lookaheads不使用任何字符)。请注意,您需要将正则表达式中的
*?
更改为
[^”]*
,否则您可以将文本进一步匹配到字符串中,而不是与标记名关联的实际值


听起来像是JSON解析器的工作,而不是regexI。我没有使用JSON解析器的选项,我需要字符串匹配它,只有正则表达式匹配它的能力:o(你可以这样做