首页 > 解决方案 > Word XML 中的正则表达式

问题描述

我有一个来自这种格式的 docx 的 xml:

<w:p w:rsidR="00AE2D8E" w:rsidRPr="00AE2D8E" w:rsidRDefault="00AE2D8E">
        <w:pPr>
            <w:rPr>
                <w:lang w:val="en-US"/>
            </w:rPr>
        </w:pPr>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t xml:space="preserve">Lorem ipsum dolor sit </w:t>
        </w:r>
        <w:proofErr w:type="spellStart"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>amet</w:t>
        </w:r>
        <w:proofErr w:type="spellEnd"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t xml:space="preserve"> </w:t>
        </w:r>
        <w:proofErr w:type="spellStart"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>consecteur</w:t>
        </w:r>
        <w:proofErr w:type="spellEnd"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>.</w:t>
        </w:r>
        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
        <w:bookmarkEnd w:id="0"/>
    </w:p>

docx 中写的是“Lorem ipsum dolor sit amet consecteur.”,但是由于来源、粗体等方面的差异,它最终中断了。

问题是我需要替换文本“Lorem ipsum dolor sit amet consecteur”。由任何其他人。

有谁知道如何通过正则表达式做到这一点?这是可能的?如果没有,还有什么其他可行的选择?

标签: javascriptregexxmlopenxmldocx

解决方案


您绝对不想尝试使用正则表达式解析 OOXML。

至少,您需要真正的 XML 解析器和工具,例如 XPath:

normalize-space(/w:p)

几乎会返回你想要的,

Lorem ipsum dolor sit amet consecteur .

推荐阅读