【发布时间】:2018-10-19 12:56:06
【问题描述】:
我正在尝试解析 Windows 命令提示符命令的输出,该命令获取进程的子进程的 Caption 和 ProcessId。该命令以以下格式返回输出:
Caption ProcessId\r\r\nnotepad++.exe 40000 \r\r\nnfilezilla.exe 90000 \r\r\n\r\r\n
我尝试使用的正则表达式是:
Caption\s*ProcessId((?:\r\r\n)([a-zA-z\W]+.exe)\s*(\d+)\s*)*
这是我想要做的:
- 匹配输出的开头
Caption ProcessId - 捕获输出中每个进程的标题和进程 ID
- 使用非捕获组,匹配两个回车
\r和单 进程信息之前的换行符\n。 - 在第一个捕获组中,捕获进程的标题
- 匹配标题和进程 ID 之间的任何空格
- 在第二个捕获组中,捕获进程 ID
- 在非捕获组内继续匹配零次或多次
- 使用非捕获组,匹配两个回车
我一直在使用https://regex101.com/r/Zqo6FW/47 和上面使用的正则表达式和示例字符串。这样做,我只匹配Caption ProcessId,我似乎无法匹配回车符和换行符。
如何修改我的正则表达式以成功匹配示例输出?
【问题讨论】:
-
您确定您提供了有效的正则表达式(regex101 链接)吗?看起来它们并不相似。
-
@Ekrem 不错,我刚刚修好了
-
cmd标签与 Microsoft Windows cmd.exe 相关。如果这与 Windows 无关,请删除cmd标记。
标签: regex