当前位置:  开发笔记 > 编程语言 > 正文

使用多行无法使正则表达式正常工作

如何解决《使用多行无法使正则表达式正常工作》经验,为你挑选了1个好方法。

我有一个来自应用程序的非常大的XML输出.我需要使用我的程序处理它,然后将其反馈给原始程序.这个XML中的部分需要填写我们的替换.有趣的部分看起来像这样:


    value
    here are some other tags
    value

并且该文档包含几个这样的部分.

我需要在这些标记内部获取所有XML部分才能对其进行修改.我写了一个正则表达式来获取这些碎片,但它不起作用:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"output.xml");
Regex regExp = new Regex(@"(.*?)", RegexOptions.Multiline & RegexOptions.IgnorePatternWhitespace & RegexOptions.CultureInvariant);
MatchCollection matches = regExp.Matches(xmlDoc.InnerXml);

如果我将所有内容放在一行中并在没有多行选项的情况下调用此正则表达式,它确实会发现每个出现的情况.通过保留文件并设置多行选项,它不起作用.有什么问题,我应该改变什么?或者有没有更容易的方法来获得这些标签之间的XML部分没有正则表达式?



1> Owen..:

我相信使用该选项RegexOptions.Singleline,而不是RegexOptions.Multiline(SRC).允许(.)匹配换行符应该适用于您的情况.

...点也匹配换行符的模式称为"单行模式".这是有点可惜,因为很容易混淆这个词与"多行模式".多行模式只影响锚,和单行模式只能通过指定RegexOptions.Singleline,如Regex.Match("串会影响点...当使用.NET框架的正则表达式类,您激活此模式","正则表达式",RegexOptions.Singleline).

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有