日期:2014-05-20  浏览次数:20960 次

java正则表达式求助,正则表达式截取子串
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class test {
static int  i1 = 0;
public static String GetTableName(String SQL,String regex){
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(SQL);
StringBuffer sb = new StringBuffer();
while (matcher.find()) { 
            System.out.println(SQL); 
            System.out.println("rod: (" + matcher.start() + ", " + matcher.end() + ")"); 
            System.out.println("sub: " + SQL.substring(matcher.start(), matcher.end())); 
            matcher.appendReplacement(sb, ""); 
        } 
        matcher.appendTail(sb);
return null;
}

public static void main(String[] args) throws IOException{
String SQL1="create  \n table   \n \r    t1   (tc1 int primary key, tc2 int) enable primary key using index";
String regex_ct="create(\\s*)table(\\s*)(\\w*)(\\s*)\\(";
GetTableName(SQL1,regex_ct);
}
}

我想让这个函数返回regex_ct中“(\\w*)”所代表的名字,何解?
当字符串中有多个空格、回车、换行符或使用不同的表名时,依然能返回表名...
求大神帮忙,不太熟悉正则表达式....
java 正则表达式 regex 子串 表名提取

------解决方案--------------------
不用正则表达式应该也可以。

        String sql = "create  \n table   \n \r    t1   (tc1 int primary key, tc2 int) enable primary key using index";
        int index = sql.toLowerCase().indexOf("table");
        if (index != -1) {
            String temp = sql.substring(index + 5).trim();
            index = temp.indexOf(" ");
            if (index != -1) {
                System.out.println("表名:"+temp.substring(0, index));
            } else {
                System.out.println("错误的SQL");
            }
        } else {
            System.out.println("错误的SQL");
        }

------解决方案--------------------
引用:
Quote: 引用:

不用正则表达式应该也可以。

        String sql = "create  \n table   \n \r    t1   (tc1 int primary key, tc2 int) enable primary key using index";
        int index = sql.toLowerCase().indexOf("table");
        if (index != -1) {
            String temp = sql.substring(index + 5).trim();
            index = temp.indexOf(" ");
            if (index != -1) {
                System.out.println("表名:"+temp.substring(0, index));
            } else {
                System.out.println("错误的SQL");
            }
        } else {
            System.out.println("错误的SQL");