C# 正则表达式查找括号内的第一个和最后一个元素

C# 正则表达式查找括号内的第一个和最后一个元素,c#,regex,C#,Regex,我需要正则表达式,它会在括号内给出第一个和最后一个元素 F.e.来自: 字符串(0xHEX1,0xHEX2,0xHEX3) 我想得到第一个和最后一个元素:0xHEX1和0xHEX3(我并不总是在3上操作) 以前我使用过(括号内始终有2个元素): String\S([A-Fa-f0-9]+x[A-Fa-f0-9]+),([A-Fa-f0-9]+x[A-Fa-f0-9]+)不需要正则表达式,请尝试使用该函数 例如: string x = "(0xHEX1,0xHEX2,0xHEX3)";

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

F.e.来自:

字符串(0xHEX1,0xHEX2,0xHEX3)

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

以前我使用过(括号内始终有2个元素):


String\S([A-Fa-f0-9]+x[A-Fa-f0-9]+),([A-Fa-f0-9]+x[A-Fa-f0-9]+)
不需要正则表达式,请尝试使用该函数

例如:

    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

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

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();
var regex=newregex(@“String\(?0x[a-fA-F0-9]+)(,0x[a-fA-F0-9]+)*,(?0x[a-fA-F0-9]+)\);
var str=“字符串(0xaaaa、0xbbbb、0xcccc、0xdddd)”;
var match=regex.match(str);
Console.WriteLine(match.Groups[“first”].Value);
Console.WriteLine(match.Groups[“last”].Value);
控制台。写入线(“完成”);
Console.ReadLine();
输出0xaaaa和0xdddd

分辨率为:

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

维拉·林德在评论中回答了我的问题。谢谢。

请向我们展示您迄今为止所写的内容提示:此处不需要任何正则表达式。关于:也许您会将
HEX\d+
更改为
[0-9A-Fa-f]+
。请记住,如果您只有一件物品,您将获得一个匹配的
first==last
。谢谢Vera rind!,就是这样!:)这不是我的反对票,但问题似乎表明括号是字符串/text的一部分,您可以用
*?
替换
(,0x[a-fA-F0-9]+)*
(请参阅我对该示例的评论)。在使用regex时不应该太具体。如果你期待十六进制,那么你应该检查十六进制。不是我的,但我不认为这是因为你的正则表达式。你的回答是正确的。