regex 如何在Php错误信息中识别文件路径?

guz6ccqo  于 12个月前  发布在  PHP
关注(0)|答案(1)|浏览(98)

我想识别包含文件路径的文本。对于下面的文本
类型化属性App\Http\Requests\ModuleRequest::$name在初始化之前不能访问
我应该能够从消息中检测到短语App\Http\Requests\ModuleRequest,这样就可以区别对待它们。我使用以下正则表达式。

$expression = "/((\w)*[\\]\w+)*/";
$isFound = preg_match($expression, $message)

字符串
但是它总是返回false.我在https://regex101.com上检查了同样的东西,它检测到了模式,但是我的代码无法做到这一点.我怎么能在消息中找到这个模式.我使用Php 8.2

quhf5bfb

quhf5bfb1#

只是我的两分钱。
你必须正确地转义\,因为它是一个正则表达式元字符。也就是说,你还需要使用preg_match_all来获取所有相关的文件路径,而不是只在一个路径上停止。

/\w+\\\(\w+\\\?)+/

字符串
正如您可能已经预料到的那样,第一个\w+用于获得匹配的开始,然后是\,然后是遵循相同模式的剩余单词集合,可选的\重复多次。

<?php

 $test = 'Typed property App\Http\Requests\ModuleRequest::$name must not be accessed before initialization';

 if(preg_match_all('/\w+\\\(\w+\\\?)+/', $test, $matches) !== false){
        print_r($matches[0]);
 }


Online Demo

相关问题