我正在尝试用java中的正则表达式替换此字符串,因为这是一个jtextArea,它可以包含很多次这个组合,
input
%fila%
Val1,val2,val3
%/fila%
output
<tr>
<th>val1</th>
<th>val2</th>
<th>val3</th>
</tr>
我没试好几次尝试
感谢您的帮助。
答案 0 :(得分:1)
用一个正则表达式来完成它会非常困难,但是两个表达式会做得更好:
String test = "%fila%\nVal1,val2,val3\n%/fila%";
Pattern bracket = Pattern.compile("%([^%]+)%([^%]*)%/\\1%", Pattern.MULTILINE);
Matcher m = bracket.matcher(test);
if (m.find()) {
String middle = m.group(2);
String tagged = "<tr>"+
middle
.replaceAll("[^,\n]+", "<th>$0</th>")
.replaceAll(",","\n")
+"</tr>";
System.out.println(tagged);
}
第一个表达式找到标记区域;第二个(内部replaceAll
)查找单个元素,并使用<th></th>
标记“框架”它们。
不幸的是,这根本不涉及嵌套:如果你将多个%fila%
嵌套在一起,上面的方法就会失败。但是,如果必须允许无限制地嵌套相同的标记,则正则表达式将无法执行此操作:在这种情况下,您需要计算嵌套级别,但正则表达式语言的功能不足以进行计数。