匹配“A - B”格式的名称,但不是“A - B:总目标 - 奇数或偶数”的格式

时间:2010-11-04 03:15:43

标签: c# .net regex visual-studio

您好我在处理体育比赛名称时遇到了问题,原则是:

  1. 匹配格式为“A - B”的字符串
  2. 在“A - B”之后不匹配任何“:”的字符串,例如“A - B:总目标 - 奇数或偶数”

  3. 这是我的正则表达式
    ^ +(\ 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!

2 个答案:

答案 0 :(得分:0)

您只需删除(?!:[\w\s]+)并使用:

即可
^.+?(\s+-\s+)([^:\n]+)$

-之后,这将匹配每个不是:的字符,并保证它一直匹配到字符串/行的末尾。

答案 1 :(得分:0)

我建议

^([^:]+)\s+-\s+([^:]+)$

匹配包含

的字符串
  1. :以外的任意数量的字符,后跟
  2. 空白,-,空格,然后是
  3. :以外的任意数量的字符。
  4. ^$锚点确保整个字符串匹配。因此,包含:的字符串永远不会匹配,因此正则表达式将在所有负面示例案例中失败,并匹配所有正面示例案例。

    我还将比赛的第一部分和第二部分包含在捕捉括号中,以防你以后想要对它们做些什么。我删除了\s+-\s+位附近不必要的数据。