我试图用正则表达式来代替这个字符串在Java中,这之间的所有逗号,因为是可以包含很多次这个组合一个JTextArea,正则表达式替换标签
input
%fila%
Val1,val2,val3
%/fila%
output
<tr>
<th>val1</th>
<th>val2</th>
<th>val3</th>
</tr>
我多试几次没有运气
感谢您的帮助。
我试图用正则表达式来代替这个字符串在Java中,这之间的所有逗号,因为是可以包含很多次这个组合一个JTextArea,正则表达式替换标签
input
%fila%
Val1,val2,val3
%/fila%
output
<tr>
<th>val1</th>
<th>val2</th>
<th>val3</th>
</tr>
我多试几次没有运气
感谢您的帮助。
这将是很难只用一个正则表达式来做到这一点,但两个表达式会做的更好:
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%
嵌套在一起,上述方法将失败。但是,如果您必须允许无限制地嵌套相同的标记,则正则表达式将无法执行此操作:在这种情况下,您需要计算嵌套级别,但是正则表达式语言不够强大,无法进行计数。
先生,您是我的英雄,我长大后想成为你,谢谢 – Crashman 2013-04-04 15:49:54
输入和输出是完全不同的。 – 2013-04-04 15:21:51
模式允许嵌套吗? – dasblinkenlight 2013-04-04 15:29:36
Achintya Jha->我需要更改标记%fila%%/ fila%为