dsewbh5588 2012-07-08 21:22
浏览 30
已采纳

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

Examples.

  • URL PRESENTS MATH HOFFA VS T-REX ROUND 1
  • URL PRESENTS MATH HOFFA VS T-REX ROUND 2
  • URL Presents Young Miles vs Rich Dolarz Round 2
  • SMACK/ URL PRESENTS AYE VERB vs O-RED
  • SMACK/ URL PRESENTS ARSONAL VS CALICOE (FULL BATTLE))
  • SMACK/ URL PRESENTS Rich Dolarz VS X-Factor (FULL BATTLE))
  • GrindTimeNow.NET: Stainless vs 3pfd
  • GrindTimeNow.NET: 5vs5 League Announcement! + 40 city tryout tour!
  • www.GrindTimeNow.NET: Magz vs K-mo (Tryouts)
  • GrindTimeNow.Net: Scotty P vs Farnum Hosted by Murs, Madd Illz and Wordsworth
  • GrindTimeNow.Net: Kaveman Brown vs Real Talk
  • GrindTimeNow.Net:DIRT VS Richard CRANIUM
  • GrindTimeNow.Net:Jonny Storm vs Real Talk (Paid Dues 2012)

I want to match Name vs Name - The string isn't always consistent e.g Grindtimwnow.net, URL PRESENTS and SMACK/ URL PRESENTS - I understand I may need to use up to three different regexs which I can work with.

The problem I'm having, having tried the following

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

Dosen't match all of the contenders name, I get things like Jonny vs Talk - Names can have up to three/four words in them, is there any simple solution or do I need to run several different regexs and build a function to first clean-up the stirng and then regex it?

  • 写回答

1条回答 默认 最新

  • duankao4489 2012-07-08 21:56
    关注

    I think any regex you use will have problems since it looks like the "vs" part isn't necessarily preceded and followed by a space (in the "GrindTimeNow.NET: 5vs5 League Announcement! + 40 city tryout tour!" example)

    The problem I see is that the NAME component could contain the characters "vs" which would confuse the regex.

    If spaces are used to precede and follow the "vs" then this regex should work

    $ourRegex =  "/(.*) [v|V][S|s] (.*)/";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?