需要PHP正则表达式来匹配URL中的模式


Need PHP regex to match pattern in URL

我在URL中的匹配模式和获得正确结果方面遇到问题。

URL示例:

#1: http://www.example.com/webapp/first-text-vs-some-text.html
#2: http://www.example.com/webapp/first-text-a1-vs-sec-b2-text.html
#3: http://www.example.com/webapp/first-text-a1-vs-sec-b2-text-vs-third-c3-text.html
#4: http://www.example.com/webapp/some-text-a1-vs-sec-text-b2-vs-third-text-vs-last-text-c1.html

没有-vs-的结果(提示:-vs-可以在上面的URL中显示一次或重复显示):

#1: first-text and some-text
#2: first-text-a1 and sec-b2-text
#3: first-text-a1, sec-b2-text and third-c3-text
#4: some-text-1a, sec-text-b2, third-text and last-text-c1

有没有PHP循环的方法可以做到这一点?

有一种情况是,URL结构中的-vs可以被找到一次或多次。

我应该用几个模式来获得结果,还是可以用一个模式匹配来完成?

我应该先拆分给定的URL,然后检查字符&符号-vs-?

你有没有遇到过这种情况?有什么想法吗?

非常感谢您的帮助和分享想法,以获得最终结果!

您可以使用以下正则表达式([^'/.]+?)(?:-vs-|'.'w+$)preg_match_all来返回-vs-之前和之后的不同部分。

Regex演示