Java 正则表达式,替换标记内的空格
我有一个不正确的xml字符串,我想建立一个正确的Java 正则表达式,替换标记内的空格,java,regex,Java,Regex,我有一个不正确的xml字符串,我想建立一个正确的 <root val="yyy"> <fol der val="attribute 1">myfolder</folder> </root> 我的文件夹 问题是标签中的空白:“folder”。 是否可以在java中使用正则表达式替换标记(而不是属性)中的空格? 多亏了所有的我会使用(?可能不是你想听到的,但这是一个解决错误问题的错误工具。经验法则是,不要尝试自己用正则表达式解析/处理XM
<root val="yyy">
<fol der val="attribute 1">myfolder</folder>
</root>
我的文件夹
问题是标签中的空白:“folder”。
是否可以在java中使用正则表达式替换<>标记(而不是属性)中的空格?
多亏了所有的我会使用
(?可能不是你想听到的,但这是一个解决错误问题的错误工具。经验法则是,不要尝试自己用正则表达式解析/处理XML文件。如果你得到了一个不正确/无效的XML,这是你应该与提供它的人一起解决的问题,而不是如何修复它。如果你的XML是这样的s:
<root val="yyy">
<fo l der val="attribute 1">myfol d er</folder>
</root>
麦弗尔
应采取以下措施:
final Pattern p = Pattern.compile("(?s)(?<=<).*?(?=/?>|\\s*\\w+\\s*=)");
Matcher m = p.matcher(data); // your XML
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().replace(" ", ""));
}
m.appendTail(sb);
data = sb.toString();
System.out.println(data);
final Pattern p=Pattern.compile((?s)(这是否是已知元素的一个时间问题,还是需要用任意的输入来处理?所以你想要<代码>如果你替换了<代码> >代码和代码> <代码>标签中的空白空间,它不会变为吗?请在标签中指定你想要替换它的地方。只有第一个标签。我只想删除空白标签。我看到了S。类似但似乎不太好:“(?=)(?=哇,我们接近解决方案了!此正则表达式仅替换第一个空格,如何替换多个?例如:
final Pattern p = Pattern.compile("(?s)(?<=<).*?(?=/?>|\\s*\\w+\\s*=)");
Matcher m = p.matcher(data); // your XML
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().replace(" ", ""));
}
m.appendTail(sb);
data = sb.toString();
System.out.println(data);
<root val="yyy">
<folder val="attribute 1">myfol d er</folder>
</root>