Bir*_*iri 15 c# regex multiline
我有一个来自应用程序的非常大的XML输出.我需要使用我的程序处理它,然后将其反馈给原始程序.这个XML中的部分需要填写我们的替换.有趣的部分看起来像这样:
<sys:customtag sys:sid="1" sys:type="Processtart" />
<sys:tag>value</sys:tag>
here are some other tags
<sys:tag>value</sys.tag>
<sys:customtag sys:sid="1" sys:type="Procesend" />
Run Code Online (Sandbox Code Playgroud)
并且该文档包含几个这样的部分.
我需要在这些标记内部获取所有XML部分才能对其进行修改.我写了一个正则表达式来获取这些碎片,但它不起作用:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"output.xml");
Regex regExp = new Regex(@"<sys:customtag(.*?)Processtart(.*?)/>(.*?)<sys:customtag (.*?)Procesend(.*?)/>", RegexOptions.Multiline & RegexOptions.IgnorePatternWhitespace & RegexOptions.CultureInvariant);
MatchCollection matches = regExp.Matches(xmlDoc.InnerXml);
Run Code Online (Sandbox Code Playgroud)
如果我将所有内容放在一行中并在没有多行选项的情况下调用此正则表达式,它确实会发现每个出现的情况.通过保留文件并设置多行选项,它不起作用.有什么问题,我应该改变什么?或者有没有更容易的方法来获得这些标签之间的XML部分没有正则表达式?
正则表达式字符“.” 即使MultiLine设置了选项,也永远不会匹配换行符。相反,您应该使用[\s\S]或其他组合匹配任何东西。
该MultiLine选项仅修改 ^(行首而不是字符串开头)和 $(行尾而不是字符串结尾)的行为
顺便说一句:确实,正则表达式不是扫描 HTML 的正确方法......
| 归档时间: |
|
| 查看次数: |
21761 次 |
| 最近记录: |