匹配一直都不是我想要的结果 - PowerShell

tianshuyinglu 2018-11-19 11:58:12
使用 Select-String cmdlet 从 proc.txt 中读入满足指定模式的行,但是无论怎样都未能找到出错的原因。
proc.txt:

Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
78 7 7784 11568 0.03 4164 0 vmnetdhcp
322 16 9260 16444 7.63 4100 0 vmware-authd
192 16 3964 10960 0.02 19036 1 vmware-tray
199 11 2420 9928 0.03 4188 0 vmware-usbarbitrator64
146 11 1392 6548 0.02 844 0 wininit
236 10 2388 10412 0.11 1020 1 winlogon
1100 76 59032 71064 1.52 15540 1 WinStore.App
238 10 1848 8592 0.02 1032 0 WUDFHost
260 10 1928 8396 0.03 1740 0 WUDFHost



Select-String -Path z:\proc_parts.txt -Pattern "(?>\S+(?=\s*$))(?<=\W\w*)"


在第二个逆序环视中,我本意希望通过肯定逆序环视匹配进程名称中包含 "-" (短划线) 字符的进程名。但是从匹配的结果中,
似乎将不包含该字符的进程名同样包含了进来。
使用 RegexBuddy 对表达式进行调试,发现一个很有意思的问题。



最后一次匹配居然成功了,不应该呀。
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshuyinglu 2018-11-22
  • 打赏
  • 举报
回复
问题已经找到,多谢各位帮助。
X-i-n 2018-11-19
  • 打赏
  • 举报
回复
\d+\s+(\w+-\w)$ 这个不行?
tianshuyinglu 2018-11-19
  • 打赏
  • 举报
回复
单列就可以,多列就不行。
aabbabababaa 2018-11-19
  • 打赏
  • 举报
回复
那就是你正则表达式有问题了,再调式看下吧。

18,124

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧