我有这样的用户输入
paul vs Team Apple Orange
Team Apple Orange vs paul
Team Apple Orange v.s. paul
Run Code Online (Sandbox Code Playgroud)
我需要编写一个正则表达式来检测分隔符两边的单词(vs,vs.,vs),并将关键字"team"的一侧存储到变量团队,将另一个存储到名称.
name = "paul"
team = "Apple Orange"
Run Code Online (Sandbox Code Playgroud)
尝试这个非常粗糙的程序:
string[] tests = new string[] {
"paul vs Team Apple Orange",
"Team Apple Orange vs paul",
"Team Apple Orange v.s. paul"
};
foreach (string line in tests)
{
string pattern = "(?:Team )?(.*?)\\s+(?:vs|v\\.s\\.)\\s+(?:Team )?(.*)";
Regex regex = new Regex(pattern);
Match match = regex.Match(line);
Console.WriteLine(line);
if (match.Success)
{
string team1 = match.Groups[1].Value;
string team2 = match.Groups[2].Value;
Console.WriteLine("Team 1 : " + team1);
Console.WriteLine("Team 2 : " + team2);
}
else
{
Console.WriteLine("No match found");
}
Console.WriteLine();
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
输出:
paul vs Team Apple Orange
Team 1 : paul
Team 2 : Apple Orange
Team Apple Orange vs paul
Team 1 : Apple Orange
Team 2 : paul
Team Apple Orange v.s. paul
Team 1 : Apple Orange
Team 2 : paul
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想允许"vs." 和"vs"正确匹配只是将表达式更改为:
string pattern = "(?:Team )?(.*?)\\s+(?:v\\.?s\\.?)\\s+(?:Team )?(.*)";
Run Code Online (Sandbox Code Playgroud)
第一个版本只能在"vs"或"vs"上正确匹配.