PHP正则表达式最后出现的单词
我的字符串是:PHP正则表达式最后出现的单词,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我的字符串是:/var/www/domain.com/public\u html/foo/bar/folder/other/。 我想从这个字符串中删除根文件夹,以便只获取公用文件夹,因为某些服务器内部有多个网站 我的实际正则表达式是:/^(.*)(www|public|html | public|html)/s 我的实际结果是:/domain.com/public\u html/foo/bar/folder/other/。 但是我想删除最后一个ocorrence,得到如下内容:/foo/bar/
/var/www/domain.com/public\u html/foo/bar/folder/other/。
我想从这个字符串中删除根文件夹,以便只获取公用文件夹,因为某些服务器内部有多个网站
我的实际正则表达式是:/^(.*)(www|public|html | public|html)/s
我的实际结果是:/domain.com/public\u html/foo/bar/folder/other/。
但是我想删除最后一个ocorrence,得到如下内容:/foo/bar/folder/other/。
谢谢 您必须使用贪婪量词,并使用lookarounds检查替代项是否包含在斜杠之间:
/^.*(?<![^\/])(?:www|public(?:_html)?|html)(?![^\/])/
/^.*?
关于lookarounds:我使用带否定字符类的否定lookarounds来检查是否同时存在斜杠或字符串限制。这样,您可以确保例如html
是一个文件夹,而不是另一个文件夹名称的一部分
我删除了无用的s修饰符。我也删除了捕获组,因为目标是用空字符串替换所有组。该?
使您的表达式不贪婪,这实际上不是您想要的。请尝试:
^(.*)(www|public_html|public|html)
应该一直持续到最后一场比赛
演示:我怎么没有意识到?非常感谢!@chris85您可以保持模式不变,只需添加U
修饰符。如果输入字符串中没有换行符,请删除s
。您可以不使用explode
?正则表达式更好@Script47@Leonardo怎么会?有消息来源吗?我真的很感兴趣因此,它可能是未来使用它的一种激励。