正则表达式获取特定属性的值?

时间:2012-05-30 12:40:45

标签: c# regex

我在代码隐藏中有一部分XAML字符串,如此

string str = "<Button Name = \"btn1\" Foo = \"Bar"\ /><TextBox Name=\"txtbox1\">"

正则表达式应该只找到Name属性的值。

我想要

btn1
txtbox1

如何?

3 个答案:

答案 0 :(得分:1)

你绝对不想这样做?

string str = "<Button Name = \"btn1\" /><TextBox Name=\"txtbox1\"/>";
var attrs = XElement.Parse("<r>"+str+"</r>").Elements().Attributes("Name").Select(a => a.Value);

foreach (var attr in attrs) Console.WriteLine(attr);

答案 1 :(得分:1)

您也可以使用XPath来获取值,而不是LINQ。这将为您提供第一个按钮的名称:

string str = "<Button Name = \"btn1\" /><TextBox Name=\"txtbox1\"/>";
XmlDocument doc = new XmlDocument();
doc.LoadXml("<root>" + str + "</root>");
string name = doc.SelectSingleNode("root/Button/@Name").InnerText;

或者,如果您只想获取任何项目的名字属性:

string name = doc.SelectSingleNode("root/*/@Name").InnerText;

或者获取所有项目的所有名称属性的列表:

foreach (XmlNode node in doc.SelectNodes("root/*/@Name"))
{
    string name = node.InnerText';
}

答案 2 :(得分:0)

如果您可以使用环视功能,请尝试此操作:

(?<=\bName\b\s*=\s*")[^"]+