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

本文关键字:属性 获取 正则表达式 | 更新日期: 2023-09-27 18:35:57

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

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

应该是什么正则表达式来查找仅 Name 属性的值。

我要

btn1
txtbox1

如何?

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

你肯定不想这样做吗?

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);

除了 LINQ,您还可以使用 XPath 来获取值。 这将获得第一个按钮的名称:

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';
}

等。

如果您可以使用 lookaround,请尝试此操作:

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