您好我在处理体育比赛名称时遇到了问题,原则是:
这是我的正则表达式:
的 ^ +(\ S + - \ S +)([^:\ N] +)。(?:![\ W \ S] +)$
以下是一些示例字符串应匹配:
Mattek-Sands Bethanie - Safarova Lucie
升。休伊特 - O. Rochus
Ball Carsten - S. Darcis
波兰 - 奥地利
波兰 - 奥地利1x2
波兰 - 奥地利1 x 2
波兰 - 奥地利1x2
波兰 - 奥地利 - 1x2
波兰 - 奥地利_ 1x2
波兰 - 奥地利(1x2)
以下是一些示例字符串不匹配:
Vityaz Podolsk Chekhov - Traktor Chel:总进球数 - 奇数甚至
哈卡 - JJK:半场
Lyngby - AaB:不打赌 AC Horsens - FC Midtjylland:第一支得分球队Mattek-Sands Bethanie - Safarova Lucie:谁将赢得第1组?
捷克共和国 - 哈萨克斯坦:1x2
罗马尼亚 - 斯洛伐克共和国:1x2
挪威 - 摩尔多瓦:1x2
Yushin Okami - Mark Munoz< BR />< span> UFC on VERSUS 2< / span>:1x2
Thiago Alves - Jon Fitch< BR />< span> UFC 117 - Oakland< / span>:1x2
波兰 - 奥地利:1x2
波兰 - 奥地利:1 x 2
但问题是我的正则表达匹配 Shoud NOT Match 类别中的第一个字符串:
“Vityaz Podolsk Chekhov - Traktor Chel:总进球数 - 奇数甚至是”
如果我在“:”之后删除“ - ”,它将不再匹配,这很好。
我认为问题可能是正则表达式中的(\ s + - \ s +)部分,但我实际上无法弄清楚如何修复它。
有人会帮忙吗? THX!
答案 0 :(得分:0)
您只需删除(?!:[\w\s]+)
并使用:
^.+?(\s+-\s+)([^:\n]+)$
在-
之后,这将匹配每个不是:
的字符,并保证它一直匹配到字符串/行的末尾。
答案 1 :(得分:0)
我建议
^([^:]+)\s+-\s+([^:]+)$
匹配包含
的字符串:
以外的任意数量的字符,后跟-
,空格,然后是:
以外的任意数量的字符。 ^
和$
锚点确保整个字符串匹配。因此,包含:
的字符串永远不会匹配,因此正则表达式将在所有负面示例案例中失败,并匹配所有正面示例案例。
我还将比赛的第一部分和第二部分包含在捕捉括号中,以防你以后想要对它们做些什么。我删除了\s+-\s+
位附近不必要的数据。