猿问

php正则文件路径| 特定字符后的第二次匹配

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

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

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

我想出的解决方案是,我可以在点之后匹配第一个空格字符,因为在点之后会有一些带有空格的目录名称的可能性很小,而且我总是会进行快速的手动检查。但我不知道如何在正则表达式中写这个


呼如林
浏览 219回答 3
3回答

繁花不似锦

您可以为此目的使用此正则表达式:(?<=[a-zA-Z]):[^.]+\.\S+正则表达式演示正则表达式详情:(?<=[a-zA-Z]): Lookbehind 断言我们之前有一个英文字母&nbsp;::: 匹配文字&nbsp;:[^.]+: 匹配 1+ 个非点字符\.: 匹配文字&nbsp;.\S+: 匹配 1+ 个非空白字符

慕哥6287543

您可以使用以下正则表达式:[A-Z]\K:.+\.\w+它将匹配任何大写字母后跟:,然后是任何以 wit 结尾的字符串.,后跟至少一个单词字符。\K&nbsp;从匹配中删除它之前的内容。

慕工程0101907

在这里,我们将消耗我们的整个字符串,因为我们收集了我们希望输出的内容,我们将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;
随时随地看视频慕课网APP
我要回答