我试图提取文本中没有磁盘字母的文件补丁。喜欢从AvastSecureBrowserElevationService; C:\Program Files (x86)\AVAST Software\Browser\Application\elevation_service.exe [X]提取:\Program Files (x86)\AVAST Software\Browser\Application\elevation_service.exe。我的实际正则表达式看起来像这样,但它会停在任何可以包含文件名的空间上。(?<=:\\)([^ ]*)我想出的解决方案是,我可以在点之后匹配第一个空格字符,因为在点之后会有一些带有空格的目录名称的可能性很小,而且我总是会进行快速的手动检查。但我不知道如何在正则表达式中写这个
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
您可以使用以下正则表达式:
[A-Z]\K:.+\.\w+
它将匹配任何大写字母后跟:
,然后是任何以 wit 结尾的字符串.
,后跟至少一个单词字符。
\K
从匹配中删除它之前的内容。
慕工程0101907
TA贡献1887条经验 获得超5个赞
在这里,我们将消耗我们的整个字符串,因为我们收集了我们希望输出的内容,我们将preg_replace:
.+C(:\\.+\..+?)\s.+
测试
$re = '/.+C(:\\.+\..+?)\s.+/m';
$str = 'AvastSecureBrowserElevationService; C:\\Program Files (x86)\\AVAST Software\\Browser\\Application\\elevation_service.exe [X]';
$subst = '$1';
$result = preg_replace($re, $subst, $str);
echo $result;
- 3 回答
- 0 关注
- 218 浏览
添加回答
举报
0/150
提交
取消