我想用正则表达式匹配一个insert的SQL语句,能够自动地将变量赋给对应的字段,比如 
SQL=“insert into table(item1,item2,item3) values(:item1,:item2,:item3)” 
map.put(item1,"111") 
map.put(item2,"222") 
map.put(item3,"333") 我想用正则表达式自动的将SQL语句中的:item1,:item2,:item3替换成map中对应的“111”,"222","333" 请问我该怎么写正则表达式的匹配语句和 对应的方法。

解决方案 »

  1.   

    (?<=:[a-zA-Z]+)[0-9]+
    可以搜出对应的 1  2 3 (?<=:)[a-zA-Z]+[0-9]搜出变量名但不知道楼主具体时想怎么做?
      

  2.   

    import java.util.*;
    import java.util.regex.*;
    public class qdb
    {
    public static void method(String s,String regex)
    {
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(s);
    while(m.find())
    {
    System.out.println(m.group());
    s=m.group(1)+m.group(1)+m.group(1);
    System.out.println(s);
    }
    }
    public static void main(String[] args)
    {
    String s="item1 item2 item3 item44";
    String regex="item(\\d+)";
    qdb.method(s, regex);
    }
    }
    照着你的要求写了个~但是比较烦琐
      

  3.   

    设计思想不好,请使用PreparedStatement,然后按照顺序来设置,非常简单
      

  4.   

    我也提倡用PreparedStatement 方法写个insert 语句,那个思路比较清晰,简单
      

  5.   

    同楼上,用PreparedStatement好过正则,