正则表达式将xml标记与多个属性匹配

时间:2015-02-26 15:44:12

标签: regex docx

我正在尝试找到一个与标签<w:proofErr .... />匹配的普通表达式。

regex101链接:regex101

原始字符串是:

<w:pPr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:autoSpaceDE w:val="0"/><w:autoSpaceDN w:val="0"/><w:adjustRightInd w:val="0"/><w:spacing w:after="0" w:line="240" w:lineRule="auto"/><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellStart"/><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="gramStart"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>student</w:t></w:r><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellEnd"/><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="gramEnd"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t xml:space="preserve"> </w:t></w:r><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellStart"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>learning</w:t></w:r><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellEnd"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t xml:space="preserve"> </w:t></w:r><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellStart"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>outcomes</w:t></w:r><w:proofErr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:type="spellEnd"/><w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:rsidRPr="008D22B1"><w:rPr><w:rFonts w:cs="SerifGothicStd-Bold"/><w:b/><w:bCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr><w:t>*</w:t></w:r><w:autoSpaceDE xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:val="0"/><w:autoSpaceDN xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:val="0"/>

我正在尝试使用以下正则表达式:

/<w:proofErr.+(?:\/>)/g

但是当我运行它时,只有一个大的匹配,从第一个<w:prrofErr开始的所有文本,并在字符串的末尾结束。

我可以使用正则表达式来匹配每个<w:proofErr .... />吗?

1 个答案:

答案 0 :(得分:1)

你的正则表达式有效,但它贪婪地将你的标签的开头与代表标签结尾的任何字符串相匹配。基本上,那个大蓝组是一个很大的标签&#34;就正则表达而言。

这是解决这个问题的一种方法。试试this regex

<w:proofErr[^>]+(?:"\/>)

它将.*替换为[^>]*,告诉它匹配除结束括号之外的任何字符