繁体   English   中英

php Regex文件路径|特定字符后的第二个匹配

[英]php Regex file path | second matching after specific character

我试图提取文本内部没有磁盘字母的文件补丁。 喜欢来自AvastSecureBrowserElevationService; C:\\Program Files (x86)\\AVAST Software\\Browser\\Application\\elevation_service.exe [X] AvastSecureBrowserElevationService; C:\\Program Files (x86)\\AVAST Software\\Browser\\Application\\elevation_service.exe [X] extract :\\Program Files (x86)\\AVAST Software\\Browser\\Application\\elevation_service.exe

我的实际正则表达式看起来像这样,但它会在任何可能包含文件名的空间上停止。

(?<=:\\)([^ ]*)

我弄清楚的是,我可以匹配点之后的第一个空格字符,因为在点之后会有一些带空格的目录名的可能性很小,我总是会做快速的手动检查。 但我不知道如何在正则表达式中写这个

您可以将此正则表达式用于此目的:

(?<=[a-zA-Z]):[^.]+\.\S+

RegEx演示

RegEx详细信息:

  • (?<=[a-zA-Z]) :断言断言我们之前有一封英文字母:
  • : :匹配文字:
  • [^.]+ :匹配1个非点字符
  • \\. :匹配文字.
  • \\S+ :匹配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;

演示

您可以使用以下正则表达式:

[A-Z]\K:.+\.\w+

它将匹配任何大写字母后跟: ,然后任何以wit结尾的字符串. ,后跟至少一个单词字符。

\\K从比赛中删除之前的内容。

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM