请大家帮我把这个字符串匹配一下。谢谢!
String s="| auto_increment_increment    | 1    |AUTO_INCREMENT列增长幅度";

解决方案 »

  1.   

    这还不清楚么?我要用java的字符创匹串,Patter那个东东,
    来匹配整个字符串s=“ ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度”
    Pattern p = Pattern.compile("");
    Matcher m = p.matcher(s);
    最后得到三个数,一个是:auto_increment_increment
    第2个数为:1
    第三个为:AUTO_INCREMENT列增长幅度
      

  2.   


    String s = " | auto_increment_increment     | 1     |AUTO_INCREMENT";
            for (String s1 : s.split("\\s*\\|\\s*"))
                System.out.println(s1);
      

  3.   

    String s=" ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度";
    Pattern p = Pattern.compile("¦(.*?)¦(.*?)¦(.*)",Pattern.CASE_INSENSITIVE|Pattern.DOTALL); 
    Matcher m = p.matcher(s);
    while(m.find()){
    out.println(m.group(1).trim()+"##"+m.group(2).trim()+"##"+m.group(3).trim());
    }
      

  4.   

    大家匹配的都不对啊,rascalboy520可能没有注意到字符串最前面还有一个空格,我改了。但是结果是这样的:
    ####| auto_increment_increment        | 1                                         |AUTO_INCREMENT列增长幅度
    ####
    出现了4个#号,还是很明显没有匹配对。
      

  5.   

    public class Test3 {    public static void main(String[] args) {
            String s = "| auto_increment_increment   | 1  |AUTO_INCREMENT列增长幅度";
            String regex = "(\\|[^|]*)+";
            System.out.println(s.matches(regex));
        }
    }我不知道楼主是不是要让匹配为 true 啊?根据仅有的一些信息写了一个,
    你可以试一下。
      

  6.   

    有空格的话,那个空格是不要的么?如果是不要的话,在里面加上一句代码:
    s=s.trim();String s=" ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度"; 
    s=s.trim();
    Pattern p = Pattern.compile("¦(.*?)¦(.*?)¦(.*)",Pattern.CASE_INSENSITIVE ¦Pattern.DOTALL);  
    Matcher m = p.matcher(s); 
    while(m.find()){ 
    out.println(m.group(1).trim()+"##"+m.group(2).trim()+"##"+m.group(3).trim()); 
    }
      

  7.   

     日志-病毒-网络-操作系统-安全-c#-asp.net-java-delphi-sql-oracle学习资源
     在这里可以找找http://japee.com.cn/jew/bbs.aspx
      

  8.   

    rascalboy520,谢谢你!但是你匹配的有问题,我一运行时出现异常:
    Exception in thread "main" java.lang.NullPointerException
    at newforold.Filemysql.readfile(Filemysql.java:35)
    at newforold.Filemysql.main(Filemysql.java:19)
    而且你的表达式写的好像不对。
      

  9.   

    如果那个空格是有用的数据的话,只要把正则那里改为:
    Pattern p = Pattern.compile("(.*?)¦(.*?)¦(.*?)¦(.*)",Pattern.CASE_INSENSITIVE ¦Pattern.DOTALL);   
    就可以了,
    这是我这边打出来的数据:
    ##auto_increment_increment##1##AUTO_INCREMENT列增长幅度
    注意前面有两个##,说明第一个数据是空的,而你给的那段:String s=" ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度";
    前面也是空的,还有问题么??
      

  10.   

    ¦ 这个符号我在myeclipse里,不能通过,是在jsp里测的,
      

  11.   

    Pattern.CASE_INSENSITIVE ¦Pattern.DOTALL 中那个"¦" 要改为‘|’啊,我是从我的代码里直接copy的,
      

  12.   

    如果仅仅是这个字符串的话,我建议你用 java.util.StringTokenizer这个类.
      

  13.   

    我要分别得到auto_increment_increment、1、AUTO_INCREMENT列增长幅度。
    这三个数据。只能用Pattern方法。因为还涉及到别的东西,不能用别的方法简单处理,
    我需要将这三个数据再进一步处理,所以要把他们分开。
    谢谢各位帮忙!
      

  14.   

    如果这个字符串是特定的格式就好办了
    看这样行不行,应该可以满足你的要求了String content=" ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度";
    String regex="[^\\¦]*\\¦([^\\¦]*)\\¦([^\\¦]*)\\¦([^\\¦]*)";
    Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
    Matcher matcher = pattern.matcher(content);
    if (matcher.matches()) {
          System.out.println(matcher.group(1).trim());
          System.out.println(matcher.group(2).trim());
          System.out.println(matcher.group(3).trim());
    }
      

  15.   

    " ¦ auto_increment_increment     ¦ 1     ¦AUTO_INCREMENT列增长幅度"
    如果是每次都对上面的这个串作处理的话,我写的那个正则应该不会有问题的,
    Exception in thread "main" java.lang.NullPointerException 
    at newforold.Filemysql.readfile(Filemysql.java:35) 
    at newforold.Filemysql.main(Filemysql.java:19) 
    看看你代码的35行,得到的是第几条数据,然后从那里找原因吧,
    先把你得到的String打出来,再分别打出匹配到的3条,看看是哪个出错,
      

  16.   

    终于搞定了,不过还是多谢各位!Pattern p = Pattern.compile("[0-9a-zA-Z_\u4e00-\u9fa5]+"); Matcher m = p.matcher(s);
    int i = 0;
    String[] www = new String[3];
    while (m.find())
    { www[i++] = m.group(); for (int j = 0; j < 3; j++)
    {
    System.out.println(www[j]);
    }
    }
      

  17.   

    没什么说的,还是anqini 得答案好。我也想回答。但是等我晚上回到家的时候,大家都给出了答案。我都没地方挣分了阿。
    俺们公司白天不允许上网的阿。所以错过了很多机会啊   。package com.sytdc.cxl;public class ZhenZeTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub String s = " | auto_increment_increment     | 1     |AUTO_INCREMENT";
    //  \\反斜线字符,一些特殊的字符要进行转移
    //  \s 空白字符
    // X* 0或多次
            for (String s1 : s.split("\\s*\\|\\s*"))
                System.out.println(s1); String s2 = "123|345|gy|8j|76h|ythgb|uyh";
            for (String s1 : s2.split("\\|"))
                System.out.println(s1);
            for (String s1 : s2.split("3"))
                System.out.println(s1);


    }}
      

  18.   

    String s="|auto_increment_increment |1 |AUTO_INCREMENT列增长幅度";
    Pattern p=Pattern.compile("(正则)(正则)(正则)");
    Matcher m=p.matcher(s);
    while(m.find()){
                         System.out.println(m.group(1));
                         System.out.println(m.group(2));
                         System.out.println(m.group(3));
    }
    应该是用这个方法,正则表达式记不太清了,你自己写吧。如果能写对,相应的 m.group(1);m.group(2);m.group(3);就是你想要的结果。