在制作模板內容輸出時,很經常會使用<%=%>之類的占位符,用正則的方式很方便替換這個內容,工作中只接觸到java、php、js,三種語言的簡單的實現方式: java版 import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestRex { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("name", "penngo"); map.put("date", "2013-01-17"); Pattern p = Pattern.compile("<%=(\\w+?)%>"); String str = "<%=date%>, Hello <%=name%>"; Matcher m = p.matcher(str); StringBuffer sb = new StringBuffer(); boolean result = m.find(); while (result) { String key = m.group(1); String value = map.get(key); m.appendReplacement(sb, value); result = m.find(); } m.appendTail(sb); System.out.println(sb.toString()); } } php版 <?php $data = array('name'=>'penngo', 'date'=>'2013-01-17'); function replaceStr($key, $data){ return $data[$key]; } $str = '<%=date%>, Hello <%=name%>'; $str = preg_replace("/<%=(\w+?)%>/ise", "replaceStr('\\1', \$data)", $str); echo $str; ?> js版 <html> <head> <meta charset="UTF-8"> <script type="text/javascript"> var date = {'name':'penngo', 'date':'2013-01-17'}; var str = '<%=date%>, Hello <%=name%>'; str = str.replace(/<%=(\w+?)%>/g, function($0, $1){ var value = date[$1]; return value; });www.2cto.com document.write(str); </script> </head> <body> </body> </html> 運行結果輸出: 2013-01-17, Hello penngo