创建接受名称但不接受Word"到#34;的正则表达式

时间:2014-04-06 20:28:55

标签: regex parsing

我正在解析ESPNcricinfo的评论,我想解析一下这些语句。

示例1:Yuvraj Singh对Nasir Jamshed

示例2:Kumar到Shoaib Malik

我为保龄球和击球手的名字写了相同的正则表达式,

正则表达式:[A-Za-z[-]*]*\s[A-Za-z[-]*]*\s

Example1轻松解析但我在example2中面临问题,如

“Kumar to”视为保龄球名...

我需要帮助来摆脱保龄球名称中的“to”字样。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下正则表达式

(?<=to |^).*?(?= to|$)

即使Yuvraj Singh to Nasir Jamshed to Kumar to Shoaib Malik字符串也是如此。

实施例

string[] names = Regex.Matches("Yuvraj Singh to Nasir Jamshed to Kumar to Shoaib Malik", "(?<=to |^).*?(?= to|$)")
                      .Cast<Match>()
                      .Select(m => m.Value)
                      .ToArray();

另一种选择,因为你肯定知道名字的每一部分都以大写字母开头,然后强制规则(to将不会匹配它,但尾随空格会):

([A-Z][\w-]*\s*)+