正则表达式解析字符串输入

时间:2014-03-24 10:31:23

标签: c# regex

我想使用正则表达式将其解析为组

string input = @"(1,2)(3,4)";
Regex.Matches(input, @"\((\d,\d)\)");

我得到的结果不仅是1,2和3,4,还有空格。你能帮助我吗?

编辑:

我想得到2组1,2和3,4。

4 个答案:

答案 0 :(得分:1)

string input = @"(1,2)(3,4)";
 MatchCollection inputMatch= Regex.Matches(collegeRecord.ToString(), @"(?<=\().*?(?=\))");

对于当前字符串,您将获得两个输出:

inputMatch[0].Groups[0].Value;
inputMatch[0].Groups[1].Value;

你也可以试试foreach循环

 foreach (Match match in inputMatch)
{

}

我还没有测试过这段代码,

我的工作范例:

MatchCollection facilities = Regex.Matches(collegeRecord.ToString(), @"<td width=""38"">(.*?)image_tooltip");
            foreach (Match facility in facilities)
            {
                collegeDetailDH.InsertFacilityDetails(collegeDetailDH._CollegeID, facility.ToString().Replace("<td width=\"38\">", string.Empty).Replace("<span class=\"icon_", string.Empty).Replace("image_tooltip", string.Empty));
            }

答案 1 :(得分:0)

你是如何联系到他们的?试试这个:

示例:

MatchCollection matchs = Regex.Matches(input, @"\((\d,\d)\)");
foreach (Match m in matchs)
{
    rtb1.Text += "\n\n" + m.Captures[0].Value;
}

答案 2 :(得分:0)

尝试查看此模式:

(\((?:\d,\d)\))+

+允许该组重复并且可以发生一次或多次。

答案 3 :(得分:0)

你需要使用外观。

string input = @"(1,2)(3,4)";
foreach (Match match in Regex.Matches(input, @"(?<=\().*?(?=\))"))
    Console.WriteLine(match.Value);

如果您的字符串可能包含括号中的其他内容,而您只需要包含数字的字符,则可以按如下方式使用更具体的正则表达式。

string input = @"(1,2)(3,4)";
foreach (Match match in Regex.Matches(input, @"(?<=\()\d,\d(?=\))"))
    Console.WriteLine(match.Value);