Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配同一行中的多个值_Regex - Fatal编程技术网

Regex 正则表达式匹配同一行中的多个值

Regex 正则表达式匹配同一行中的多个值,regex,Regex,我正在使用这个测试 Regex: (\d{4}\/\d{2}\/\d{2}\(?:[01]\d}2[0123]):(?:[012345]\d):(?:[012345]\d))(C:\\windows\\system32\\cmd.exe)\.exe 示例日志: 2020/02/24 09:28:11 C:\windows\system32\cmd.exe notepad.exe 2020/02/24 10:23:22 2020/02/24 10:23:59 2020/02/24 10:23

我正在使用这个测试

Regex:
(\d{4}\/\d{2}\/\d{2}\(?:[01]\d}2[0123]):(?:[012345]\d):(?:[012345]\d))(C:\\windows\\system32\\cmd.exe)\.exe

示例日志:

2020/02/24 09:28:11 C:\windows\system32\cmd.exe notepad.exe

2020/02/24 10:23:22

2020/02/24 10:23:59

2020/02/24 10:23:22 C:\windows\system32\cmd.exe netstat.exe

2020/02/24 10:37:21 C:\windows\system32\cmd.exe nslookup.exe

需要帮助:我想从同一行中获取日期和时间、C:\windows\system32\cmd.exe以及可执行文件。出现的问题是它与所有日期都匹配。我想得到日期/时间以及其他2个标准,而不仅仅是日期/时间行

我想得到的结果是:

1. 2020/02/24 09:28:11 C:\windows\system32\cmd.exe notepad.exe
2. 2020/02/24 10:23:22 C:\windows\system32\cmd.exe netstat.exe
3. 2020/02/24 10:37:21 C:\windows\system32\cmd.exe nslookup.exe
试试这个:
((\d{4}/\d{2}/\d{2})\d{2}:\d{2}:\d{2})(C:\\\\windows\\\\system32\\\\\cmd\.exe)(.\\.exe))

((\d{4}/\d{2}/\d{2})(\d{2}:\d{2}:\d{2})(C:\\windows\\system32\\cmd\.exe)(.\.exe))

试试这个:
((\d{4}/\d{2}/\d{2})\d{2}:\d{2}:\d{2})(C:\\\\windows\\\\system32\\\\\cmd\.exe)(.\\.exe))


(\d{4}/\d{2}/\d{2})(\d{2}:\d{2})(C:\\windows\\system32\\cmd\.exe)(.\.exe))

您可以使用捕获组并指定要匹配的所有部分,而无需使用替换

^(\d{4}/\d{2}/\d{2}) ((?:[01]\d|2[0123]):[012345]\d:[012345]\d) (C:\\windows\\system32\\cmd\.exe) (\S+\.exe)$
  • ^
    字符串的开头
  • (\d{4}/\d{2}/\d{2})
    Capturegroup1匹配类似日期的模式
  • ((?:[01]\d | 2[0123]):[012345]\d:[012345]\d)
    Capturegroup 2匹配时间型模式
  • (C:\\windows\\system32\\cmd\.exe)
    Capturegroup 3匹配windows路径
  • (\S+\.exe)
    Capturegroup4匹配1+空格字符、一个点和
    exe
  • $
    字符串结尾

您可以使用捕获组并指定要匹配的所有部分,而无需使用替换
|

^(\d{4}/\d{2}/\d{2}) ((?:[01]\d|2[0123]):[012345]\d:[012345]\d) (C:\\windows\\system32\\cmd\.exe) (\S+\.exe)$
  • ^
    字符串的开头
  • (\d{4}/\d{2}/\d{2})
    Capturegroup1匹配类似日期的模式
  • ((?:[01]\d | 2[0123]):[012345]\d:[012345]\d)
    Capturegroup 2匹配时间型模式
  • (C:\\windows\\system32\\cmd\.exe)
    Capturegroup 3匹配windows路径
  • (\S+\.exe)
    Capturegroup4匹配1+空格字符、一个点和
    exe
  • $
    字符串结尾

我会这样做

^(\d{4}\/\d{2}\/\d{2})\s(\d{2}:\d{2}:\d{2})\s(.+?\.exe\s.+?\.exe)$

此正则表达式为您提供了所需的3个结果:

1. 2020/02/24 09:28:11 C:\windows\system32\cmd.exe notepad.exe
2. 2020/02/24 10:23:22 C:\windows\system32\cmd.exe netstat.exe
3. 2020/02/24 10:37:21 C:\windows\system32\cmd.exe nslookup.exe

(请参见演示链接)

以下是我的做法

^(\d{4}\/\d{2}\/\d{2})\s(\d{2}:\d{2}:\d{2})\s(.+?\.exe\s.+?\.exe)$

此正则表达式为您提供了所需的3个结果:

1. 2020/02/24 09:28:11 C:\windows\system32\cmd.exe notepad.exe
2. 2020/02/24 10:23:22 C:\windows\system32\cmd.exe netstat.exe
3. 2020/02/24 10:37:21 C:\windows\system32\cmd.exe nslookup.exe

(请参见演示链接)

这与“2020/02/24 10:37:21我的狗有跳蚤。exe我的猫也有。exe”匹配。@CarySwoveland,是的,但它允许灵活处理各种不同的文件路径。在这里,你可以按照你的要求严格执行,但我认为OP可能需要一些灵活性,并且仍然可以与不同的文件路径匹配。这与“2020/02/24 10:37:21我的狗有跳蚤。exe我的猫也有。exe”匹配。@CarySwoveland,是的,但它允许灵活地处理各种不同的文件路径。您可以在此处执行任意严格的操作,但我假设OP可能需要一些灵活性,并且仍然可以与不同的文件路径匹配。您在最短等待时间后选择了一个答案,然后将选择更改为另一个答案,然后阅读指出该答案中的弱点的注释,将选择更改回原始答案,然后回到#2。不必急于选择答案!这里的大多数人至少要等几个小时才能这样做;有些人会等待更长的时间,等待其他答案出现,并允许读者回顾和评论给出的答案。此外,快速抽取选项可能会阻止其他答案,imo对那些仍在处理答案的人来说是不礼貌的。您在最短等待时间后选择了一个答案,然后将选择更改为另一个答案,然后阅读指出该答案中弱点的注释,将选择更改回原始答案,然后回到#2。不必急于选择答案!这里的大多数人至少要等几个小时才能这样做;有些人会等待更长的时间,等待其他答案出现,并允许读者回顾和评论给出的答案。此外,快速抽取选项可能会阻碍其他答案,imo对那些仍在研究答案的人来说是不礼貌的。