【问题标题】:RegEx matching double quotes正则表达式匹配双引号
【发布时间】:2013-04-01 21:39:25
【问题描述】:

这种模式一直给我错误,就好像它没有退出双引号一样。我正在尝试抓住“Gen”

string str = "<div type=\"book\" osisID=\"Gen\">";

Match m = Regex.Match(str, @"<div type=\"book\" osisID=\"(.*?)\">", RegexOptions.IgnoreCase);

if (m.Success) {    
    Console.Write(m.Groups[1].Value);
}

【问题讨论】:

  • 真的想用 RegEx 解析 XML/HTML 吗?
  • 我只需要一个标签,命名空间会一直在变化。
  • 它给你的“错误”是什么?
  • 您似乎正试图使用​​ \" 转义引号。您需要在逐字 (@") 字符串中使用 "" 转义引号。也就是说,不要使用 Regex 来解析 HTML!
  • @abatishchev 有人喜欢live dangerously...

标签: c# xml regex double-quotes


【解决方案1】:

使用XML解析机制解析XML:

var doc = XDocument.Parse(xml)
var root = doc.Root
var osisId = root.Attribute("osisID").Value;

【讨论】:

    【解决方案2】:

    在 C# 逐字字符串中,您可以使用另一个引号而不是反斜杠来转义引号:

     @"<div type=""book"" osisID=""(.*?)"">"
    

    【讨论】:

      【解决方案3】:

      假设您的 html 比您刚刚发布的更复杂,并且已经阅读了 this

      string str = "<div type=\"book\" osisID=\"Gen\">";
      
      var doc = new HtmlAgilityPack.HtmlDocument();
      doc.LoadHtml(str);
      var osisID = doc.DocumentNode
                      .SelectSingleNode("//div[@type='book']")
                      .Attributes["osisID"]
                      .Value;
      

      PS:HtmlAgilityPack

      【讨论】:

        猜你喜欢
        • 2016-12-13
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多