用重复的单词隔离字符串的部分

时间:2018-01-07 02:05:50

标签: php regex

我试图从文件路径和名称中隔离(提取)一个部分。我遇到的问题是当文件名的某一部分重复时它无法正常工作。

文件路径/名称可以是以下之一:

/Make/Model/Year/image.jpg

/Make/Model/Model-Year/image.jpg

我正在尝试提取

  

Year

为了使事情变得更加困难,年份的格式为2015年和2月15日。

我尝试了以下

/(?<=Model\/).+?(?=\/)/g

但这适用于/Make/Model/Year/image.jpg,但不适用于/Make/Model/Model-Year/image.jpg,而是选择Model-Year

任何帮助总是受到赞赏。

1 个答案:

答案 0 :(得分:3)

您可以在正常表达式中Model-之后匹配可选Model/,并将其重置为\K。这将模拟可变长度的后视:

Model\/(?:Model-)?\K.+?(?=\/)

演示:https://regex101.com/r/SVbpa4/2