最近项目碰到了需要导出word但是大家都知道的,使用COM需要在服务器配置权限,且word进程不好控制,搜索到了一个解决方案,就是word另存为xml。
但是现在碰到一个问题。使用XmlPath搜索,但是这个xml又没什么Id之类的
分析了这个xml,觉得使用正则应该可以满足我的要求,好了一大堆废话其实也就是想让以后同样需要使用word导出功能的童鞋么。做个标记。
现在是问题的正文:
<w:p wsp:rsidR="00000000" wsp:rsidRDefault="00061023">
<w:pPr>
<w:jc w:val="center"/>
<w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="fareast"/>
<wx:font wx:val="Arial"/>
<w:b/>
<w:sz w:val="24"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:b/>
<w:sz w:val="24"/>
</w:rPr>
<w:t>产品编号</w:t>
</w:r>
</w:p>
我想要匹配这个<w:p></w:p>标签和内容,正则应该怎么写?试了好多都不行,求助大牛。。c#xml正则

解决方案 »

  1.   

    (?is)<w:p\b[^>]*?>.*?</w:p>
      

  2.   

    如果<w:p>有嵌套情况,可以使用平衡组来获取:(?is)<w:p\b[^>]*>(?><w:p\b[^>]*>(?<o>)|</w:p\b>(?<-o>)|(?:(?!</?w:p\b).)*)*(?(o)(?!))</w:p>
      

  3.   

      <\w?:\w?\s+\w{1,3}\:\w{1,5}=["']?\d{1,8}["'|]?\s?\w{1,3}\:\w{1,13}=["'|]?\d{1,8}["'|]?> 匹配第一行
      

  4.   

          <\w?\:\w{1,3}><\w?\:\w{1,2}\s?\w?\:\w{1,3}\=(["'|]?)\w{1,6}\1\/> 第二第三行第四行
      

  5.   

      <\w?\:\w{1,6}\s?\w?\:\w{1,5}=(["'|]?)\w{1,5}\1\s?\w?\:\w?\-\w{1,4}\=\1\w{1,5}\1\s?\w+\:\w{1,4}\=\1\w{1,7}\1\/>   
      <\w{1,2}\:\w{1,4}\s?\w{1,2}\:\w{1,3}\=(["'|]?)\w{1,5}\1\/>
      <\w?\:\w{1,2}\s?\w?\:\w{1,3}\=(["']?)\d{1,2}\1\/>  56789行
      

  6.   

    呃,不懂为啥不直接用DOM来操作?