匹配除了之前和之后预先确定的一切

时间:2012-07-08 21:22:53

标签: php regex rss

实施例

  • URL介绍MATH HOFFA VS T-REX ROUND 1
  • URL介绍MATH HOFFA VS T-REX ROUND 2
  • 网址提供年轻里程与Rich Dolarz第2轮
  • SMACK / URL介绍AYE VERB vs O-RED
  • SMACK / URL提供ARSONAL VS CALICOE(全部战斗))
  • SMACK / URL PRESENTS Rich Dolarz VS X-Factor(FULL BATTLE))
  • GrindTimeNow.NET:不锈钢vs 3pfd
  • GrindTimeNow.NET:5vs5联盟公告! + 40个城市试用游!
  • www.GrindTimeNow.NET:Magz vs K-mo(Tryouts)
  • GrindTimeNow.Net:由Murs,Madd Illz和Wordsworth主持的Scotty P vs Farnum
  • GrindTimeNow.Net:Kaveman Brown vs Real Talk
  • GrindTimeNow.Net:DIRT VS Richard CRANIUM
  • GrindTimeNow.Net:Jonny Storm vs Real Talk(付费2012)

我想匹配名称与名称 - 字符串并不总是一致的,例如Grindtimwnow.net,URL PRESENTS和SMACK / URL PRESENTS - 我知道我可能需要使用最多三个不同的正则表达式,我可以使用它。

我遇到的问题,尝试了以下

$ourRegex =  "/(\b\w+\W+){0,3}vs(\W+\w+){0,3}/";
$ourRegex =  "/:\s+(.+?)\s+Vs\s+(.+)$/";
$ourRegex = '/\s+(.+?)\s+Vs\s+(.+)$/';

Dosen不匹配所有的竞争者名称,我得到像Jonny vs Talk这样的东西 - 名字中最多可以有三个/四个单词,是否有任何简单的解决方案或者我需要运行几个不同的正则表达式并构建一个首先清理搅拌然后正则表达式?

1 个答案:

答案 0 :(得分:1)

我认为你使用的任何正则表达式都会有问题,因为它看起来像" vs"部分不一定是前后空格(在" GrindTimeNow.NET:5vs5联盟公告!+ 40城市试用游!"示例)

我看到的问题是NAME组件可能包含字符" vs"这会混淆正则表达式。

如果使用空格位于" vs"之前和之后。然后这个正则表达式应该工作

$ourRegex =  "/(.*) [v|V][S|s] (.*)/";