VALUES (15, '13488221043');我想获得15   13488221043 这2个数字 正则表达式改如何写?

解决方案 »

  1.   

    是java的?? 还是js 的??
      

  2.   

    String str = "VALUES (15, '13488221043');";

    Pattern patt = Pattern.compile(".+(\\d+)\\D+(\\d+).+");
    Matcher match = patt.matcher(str);
    System.out.println(match.group(1));
    System.out.println(match.group(2));
      

  3.   

    当然,如果字符串格式比较死的话,也可以
    Pattern patt = Pattern.compile("VALUES \\((\\d+), '(\\d+)'\\);");
    Matcher match = patt.matcher(str);
    System.out.println(match.group(1));
    System.out.println(match.group(2));
      

  4.   

    System.out.println(match.group(1));捕获第一个正则表达式里面的括号里的表达式
    System.out.println(match.group(2));捕获第二个正则表达式里面的括号里的表达式
    其实可以直接这样写
    Pattern patt = Pattern.compile("\\d+");
    Matcher match = patt.matcher(str);
    while(match.find())
    System.out.println(match.group());
    就会匹配所有的数字类型的串
      

  5.   

    public class Regex {
       static final String regexStr = "VALUES [(]{1}[0-9]{1,4}, '[0-9]{11}'[)]{1}";
    //static final String regexStr = ".+(\\d+)\\D+(\\d+).+";
        public static void main(String args[]) throws IOException
        {
            Regex r = new Regex();
            BufferedReader reader = new BufferedReader(new FileReader(new File("E:/data/20100318company_mo.sql")));
            String string = null;
            while(reader.read()!=-1){
             string = reader.readLine();
             r.doRegex(Regex.regexStr,string);
            }
        }
        
        public void doRegex(String regexString,String string)
        {
            Pattern pattern = Pattern.compile(regexString);
            Matcher matcher = pattern.matcher(string);
            //System.out.println(matcher.groupCount());
            
            while(matcher.find())
            {
                String srcStr = matcher.group();  
                String printStr = srcStr.substring(8,srcStr.length()-1); 
              
                System.out.println(printStr.replaceAll("'", " ").split(",")[0]);          //将匹配的结果放入List
            }
           
        }
      
      

  6.   

    6楼的方法正解
    使用match.group()可以直接获取到这两个数值,不清楚8楼说的意思。