用于分割字符串的正则表达式

时间:2010-09-16 11:26:04

标签: c# regex

我正在寻找正则表达式,以便在输入为以下任意内容时将匹配分别设为"HELLO""WORLD"

"HELLO", "WORLD"
"HELL"O"", WORLD"
"HELL,O","WORLD"

我尝试了很少的组合,但它们似乎都不适用于所有场景。

我希望我的c#代码执行类似的操作:

string pattern = Regex Pattern;
// input here could be any one of the strings given above
foreach (Match match in Regex.Matches(input, pattern))
{
   // first iteration would give me Hello
   // second iteration would give me World
}

3 个答案:

答案 0 :(得分:4)

如果您只在Hello和World上要求它,我建议Sebastian的答案。这是一个完美的方法。如果你真的在那里放置其他数据,并且不想捕获Hello和World。

这是另一种解决方案:

^([A-Z \ “\,] +)[\” \,\ S] +([A-Z \“\,] +)$

唯一的问题是,这将使HELLO和WORLD回归“和,在其中。

然后我们由你来替换“和输出字符串中的任何内容。

示例:

//RegEx: ^([A-Z\"\,]+)[\"\,\s]+([A-Z\"\,]+)$
    string pattern = "^([A-Z\"\\,]+)[\"\\,\\s]+([A-Z\"\\,]+)$";
    System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex(pattern);

    string MyInput;

    MyInput = "\"HELLO\",\"WORLD\"";
    MyInput = "\"HELL\"O\"\",WORLD\"";
    MyInput = "\"HELL,O\",\"WORLD\"";

    string First;
    string Second;

    if (Reg.IsMatch(MyInput))
    {
        string[] result;
        result = Reg.Split(MyInput);

        First = result[1].Replace("\"","").Replace(",","");
        Second = result[2].Replace("\"","").Replace(",","");
    }

第一和第二将是Hello和World。

希望这会有所帮助。如果您需要任何进一步的帮助,请告诉我。

答案 1 :(得分:2)

试试这个:

Regex.Match(input, @"^WORLD|HELL[""|O|,]?O[""|O|,]$").Success

答案 2 :(得分:0)

我总是觉得使用像http://www.gskinner.com/RegExr/这样的在线正则表达式测试器很有用。