Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式,替换标记内的空格_Java_Regex - Fatal编程技术网

Java 正则表达式,替换标记内的空格

Java 正则表达式,替换标记内的空格,java,regex,Java,Regex,我有一个不正确的xml字符串,我想建立一个正确的 <root val="yyy"> <fol der val="attribute 1">myfolder</folder> </root> 我的文件夹 问题是标签中的空白:“folder”。 是否可以在java中使用正则表达式替换标记(而不是属性)中的空格? 多亏了所有的我会使用(?可能不是你想听到的,但这是一个解决错误问题的错误工具。经验法则是,不要尝试自己用正则表达式解析/处理XM

我有一个不正确的xml字符串,我想建立一个正确的

<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>