我需要正则表达式,它会在括号内给出第一个和最后一个元素。
F.e。从:
String(0xHEX1,0xHEX2,0xHEX3)
我想获得第一个和最后一个元素:0xHEX1
和0xHEX3
(并不总是我在3上操作)
以前我在使用(我在括号内总是有两个元素):
String\S([A-Fa-f0-9]+x[A-Fa-f0-9]+),([A-Fa-f0-9]+x[A-Fa-f0-9]+)
答案 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