Java 用于引用未引用XML属性的正则表达式

Java 用于引用未引用XML属性的正则表达式,java,xml,regex,Java,Xml,Regex,编辑:100%正确的理论是你根本不想这样做。然而,我接受了最有帮助的答案 所以我从一个承诺修复它的客户机那里得到了丑陋的XML。与此同时,我需要自己清理一下。我正在寻找一个在Java中使用的正则表达式,以便在未加引号的属性周围添加引号。一般情况更好,但到目前为止,只有一个属性被破坏,因此正则表达式可以专门引用“attr1”。该属性的值未知,因此我无法将其包含在搜索中 <tag attr1 = VARIABLETEXT> <tag attr1 = "VARIABLETEXT"&g

编辑:100%正确的理论是你根本不想这样做。然而,我接受了最有帮助的答案

所以我从一个承诺修复它的客户机那里得到了丑陋的XML。与此同时,我需要自己清理一下。我正在寻找一个在Java中使用的正则表达式,以便在未加引号的属性周围添加引号。一般情况更好,但到目前为止,只有一个属性被破坏,因此正则表达式可以专门引用“attr1”。该属性的值未知,因此我无法将其包含在搜索中

<tag attr1 = VARIABLETEXT>
<tag attr1 = "VARIABLETEXT">not quoted</tag>
<tag attr1 = VARIABLETEXT attr2 = "true">
<otherTag>buncha junk</otherTag>
<tag attr1 = "VARIABLETEXT">"quoted"</tag>

未引用
垃圾食品
“引用”
应该变成

<tag attr1 = "VARIABLETEXT">
<tag attr1 = "VARIABLETEXT">not quoted</tag>
<tag attr1 = "VARIABLETEXT" attr2 = "true">
<otherTag>buncha junk</otherTag>
<tag attr1 = "VARIABLETEXT">"quoted"</tag>

未引用
垃圾食品
“引用”

编辑:非常感谢你告诉我不要做我想做的事。然而,这不是随机的,任何东西都可以使用XML,我将遇到所有的“不要做”问题。我读了其他的帖子。我正在寻找特定黑客的特定帮助。

不要使用正则表达式来修复/解析/处理标记语言


使用一个宽容的解析器,比如通过几个简单的步骤来阅读和修复文档。有一种方法可以使用。

好的,考虑到您的限制,您可以:

寻找

<tag attr1\s*=\s*([^" >]+)

vi filename.xml<代码>:%s/attr1=false/attr1=“false”/g
。。。还有针对Windows的gVim。如果只是临时性的,为什么不使用清理/验证库对其进行预处理呢?一个问题:如何在
VARIABLETEXTattr2
中确定拆分位置?下一个属性是否以
attr
开头?还是大写/小写开关?对不起,Tim,VARIABLETEXT和attr2之间应该有一个空格。谢谢你的线程引用。它让生活变得有价值。是的,我读过。谁能不说教就帮我学regex吗?不,对不起。因为没有办法做到100%正确,所以总会有一些奇怪的情况发生。为什么使用解析器不是一个选项呢?那我就接受89%吧。谢谢你的想法。这不是一个选择。我现在没有时间做这件事,这就是我来这里寻求regex帮助的原因。如果你建议使用tidy,你应该建议配置选项,让OP实现他想要的。对不起,变量文本和attr2之间肯定有一个空格。
<tag attr1 = "\1"
String resultString = subjectString.replaceAll("<tag attr1\\s*=\\s*([^\" >]+)", "<tag attr1 = \"$1\"");