我试图提取文本内没有磁盘字母的文件补丁。就像从AvastSecureBrowserElevationService; C:\Program Files (x86)\AVAST Software\Browser\Application\elevation_service.exe [X]
中提取:\Program Files (x86)\AVAST Software\Browser\Application\elevation_service.exe
。
我的实际正则表达式看起来像这样,但是它将停在任何可以包含文件名的空间上。
(?<=:\\)([^ ]*)
我想出的解决方案是,我可以在点号后匹配第一个空格字符,因为极少有机会在目录名后加上点号后的空格,并且我将始终进行快速手动检查。但是我不知道该怎么用正则表达式来写
答案 0 :(得分:3)
您可以为此使用正则表达式:
(?<=[a-zA-Z]):[^.]+\.\S+
RegEx详细信息:
(?<=[a-zA-Z])
:在后面断言我们在:
之前有一个英文字母:
:匹配文字:
[^.]+
:匹配1个以上的非点字符\.
:匹配文字.
\S+
:匹配1个以上非空格字符答案 1 :(得分:1)
在这里,当我们收集要输出的内容时,我们将消耗整个字符串,并且我们将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;
答案 2 :(得分:1)