当使用 [^00]* 时有 0 时,正则表达式无法匹配

本文关键字:正则表达式 时有 | 更新日期: 2023-09-27 18:35:48

美好的一天,

使用正则表达式获取标签内的所有内容是否有其他选择。 这是我的代码:

   MatchCollection matches = Regex.Matches(chek, "<bib-parsed>([^'000]*?)</bib-parsed>");

下面是示例输入:

   <bib-parsed>
   <cite>
   <pubinfo>
   <pub-year><i>1984</i></pub-year>
   <pub-place>Albuquerque</pub-place>
   <pub-name>Maxwell Museum of Anthropology and the University of New Mexico Press        </pub-name>
   </pubinfo>
   <bkinfo>
   <btl>The Galaz Ruin: A Prehistoric Mimbres Village in Southwestern New Mexico</btl>
   </bkinfo>
   </bib-parsed>

上面的样本将被匹配,但是当发布年份中有"0"(如"2001")时,匹配失败。还有其他选择吗?谢谢

当使用 [^�00]* 时有 0 时,正则表达式无法匹配

您的输入似乎是有效的 XML。如果是这种情况,请在 System.XmlSystem.Xml.Linq 中使用 XML 解析器。它们非常快。对于包含多个块的输入字符串(如示例),请使用 System.Xml.Linq 命名空间对象:

var bibChunks = XDocument.Parse(yourXmlString)
                         .Descendants("bib-parsed")
                         .Select(e => e.Value);
foreach(string chunk in bibChunks) {
    // do stuff
}

仅此而已。