java 开发 xml中使用正则表达式实现一段文本替换。主要是要实现文本对齐和缩进。

比如说我有着一些代码(注意不同缩进):1.<TemplateId>Tag</TemplateId><Name>HTMLTag</Name><Propertyname="s... 比如说我有着一些代码(注意不同缩进):

1.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>

2.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>

3.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>

要统一替换成:
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>
这个样式包含了上面三个(或者更多),即如果<TemplateId>Tag</TemplateId>有缩进,下面的要保持一致的缩进,如何实现?
PS:现在以以下格式(一行无空格)对以上三种(或者更多)实现选择:
<TemplateId>Tag</TemplateId>\R\S\S<Name>HTML Tag</Name>\R<Property name="self_close">\R<Boolean>false</Boolean>\R</Property>
(无\S\S)
要实现替换后以上三种效果为:
1.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>
2.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>
3.
<TemplateId>Tag</TemplateId>
<Name>HTML Tag</Name>
<Property name="self_close">
<Boolean>false</Boolean>
</Property>
展开
 我来答
FritzBaidu
推荐于2016-04-17 · TA获得超过318个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:80.5万
展开全部
这个可以
但是 要替换几遍
第1次 把空白符号 全部替换成空(这时候全部xml都会在一行上了)
第2次 找到</xxx>或/>结尾的在尾部增加一个换行
第3次 比较关键,你要用到正则表达式的[环视],也就是你要找到 <xxx></xxx>或<xxx />字样的,而且这段字符的前面必须符合<xxx>后面符合</xxx>那么认为这段字符是子标签 就在头部插一个\t制表符 或者你喜欢的N个空格
当然文字描述得比较不细致 细节方面你自己把握吧

然后给你贴一个 环视的 说明 具体自己再查查网页

(?<=Expression) 逆序肯定环视,表示所在位置左侧能够匹配Expression

(?<!Expression) 逆序否定环视,表示所在位置左侧不能匹配Expression

(?=Expression) 顺序肯定环视,表示所在位置右侧能够匹配Expression

(?!Expression) 顺序否定环视,表示所在位置右侧不能匹配Expression
追问
能举个例子吗?环视?
追答
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

public static void main(String[] args){

String pattern = "(?)[^)";
String text = "aaabbbccc";

Pattern p = Pattern.compile(pattern);
Matcher matcher= p.matcher(text);

while(matcher.find()){
System.out.println(matcher.group());
}

}

}

比如说你这种情况 你要获取div标签种的内容 也就是例子里的aaa ccc 而不是aaa
所以你就需要正则用到环视,表示了 你所描述的字样左边应该是怎么样的 右边是怎么样的 这样才能匹配
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式