正则表达式在括号内找到第一个和最后一个元素

时间:2015-12-07 10:12:28

标签: c# regex

我需要正则表达式,它会在括号内给出第一个和最后一个元素。

F.e。从:

String(0xHEX1,0xHEX2,0xHEX3)

我想获得第一个和最后一个元素:0xHEX10xHEX3(并不总是我在3上操作)

以前我在使用(我在括号内总是有两个元素):

String\S([A-Fa-f0-9]+x[A-Fa-f0-9]+),([A-Fa-f0-9]+x[A-Fa-f0-9]+)

3 个答案:

答案 0 :(得分:2)

决议是:

String\((?<first>0x[0-9A-Fa-f]+).*?(?<last>0x[0-9A-Fa-f]+)\)

归功于Vera rind,他在评论中回答了我的问题。谢谢。

答案 1 :(得分:1)

正则表达式是不必要的,请尝试使用String.Split()函数。

例如:

    string x = "(0xHEX1,0xHEX2,0xHEX3)";
    string y = x.Substring(1, x.Length - 2);
    string[] elements = y.Split(',');

之后使用elements变量,您可以轻松访问第一个和最后一个元素。

string first = elements[0] //First
string last = elements[elements.Length - 1]; //Last

答案 2 :(得分:1)

如果你想继续使用正则表达式,这应该适合你。

var regex = new Regex(@"String\((?<first>0x[a-fA-F0-9]+)(,0x[a-fA-F0-9]+)*,(?<last>0x[a-fA-F0-9]+)\)");
var str = "String(0xaaaa,0xbbbb,0xcccc,0xdddd)";

var match = regex.Match(str);
Console.WriteLine(match.Groups["first"].Value);
Console.WriteLine(match.Groups["last"].Value);

Console.WriteLine("Done");
Console.ReadLine();

输出0xaaaa和0xdddd