php中使用正则表达式如下:
ereg("[[:alnum:]]([GP][0-9]{2})[[:alnum:]]{4}", "9" , $reg);java中如何使用啊,谢谢

解决方案 »

  1.   

    String.find
    String.indexOf
    Pattern
    这些类都可以应用。关键我不会PHP
      

  2.   

    java.util.regex包
     Pattern p = Pattern.compile("a*b");
     Matcher m = p.matcher("aaaaab");
     boolean b = m.matches();
      

  3.   

    不懂 PHP 的语法,能说明一下后面两个参数的意义吗?[[:alnum:]] 这个是 POSIX 字符组,在 Java 中可用 \p{Alnum} 或者 [0-9a-zA-Z] 来代替其他的全部是一样的。
      

  4.   


    bool ereg ( string pattern, string string [, array regs])
    注: 使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。 以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。 如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs,则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串,$regs[2] 包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。 
      

  5.   

    如果有多个匹配的话,regs 得变成二维数组喽?下面只做了个简单的,如果第二次找到匹配的话,会把第一次的给冲掉,
    估计也是不正确的,哎,主要我不会 PHP。import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    public static void main(String args[]) {
            String p = "\\p{Alnum}([GP][0-9]{2})\\p{Alnum}{4}"; 
            String string = "aG14aaa1212";
            
            String[] reg = ereg(p, string);
            
            for(String s : reg) {
                System.out.println(s);
            }
        }
        
        private static String[] ereg(String pattern, String string) {
            Pattern p = Pattern.compile(pattern);
            Matcher matcher = p.matcher(string);
            String[] reg = new String[matcher.groupCount()];
            while(matcher.find()) {
                for(int i = 0; i < reg.length; i++) {
                    reg[i] = matcher.group(i + 1);
                }
            }
            return reg;
        }
    }
      

  6.   

    漏看了“$regs[0] 包含整个匹配的字符串。”了,再改一下。    private static String[] ereg(String pattern, String string) {
            Pattern p = Pattern.compile(pattern);
            Matcher matcher = p.matcher(string);
            String[] reg = new String[matcher.groupCount() + 1];
            while(matcher.find()) {
                for(int i = 0; i < reg.length; i++) {
                    reg[i] = matcher.group(i);
                }
            }
            return reg;
        }
      

  7.   

    比如说字符串:aG14aaa1212bG14aaa1212第一次匹配的是 aG14aaa1,那么 reg[0] = "aG14aaa1" reg[1] = "G14"但是接下来又匹配到了 bG14aaa1,不知道 bG14aaa1 和 G14 这时应该放在哪里,还是说把前面的冲掉?
      

  8.   

    Pattern pattern = Pattern
    .compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}");
    Matcher matcher = pattern.matcher("9");
    boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) {
    $reg[i] = matcher.group(i);
    }
      

  9.   

    参考资料:POSIX风格正则表达式 http://blog.chinaunix.net/u/27731/showart.php?id=252747
    PERL 风格正则表达式 http://blog.csdn.net/dreamnear/archive/2007/11/08/1872965.aspx
      

  10.   

    在PHP 里面用的是POSIX风格   而java里面用的是PERL风格  楼主 你只要找到他们的对应关系就可以了
      

  11.   

     楼上的代码,我运行了一下,有这样的错误!!!!!!Exception in thread "main" java.lang.IllegalStateException: No match found
    at java.util.regex.Matcher.group(Matcher.java:461)
    at Test3.main(Test3.java:15)
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test3 { public static void main(String[] args) {
    Pattern pattern = Pattern
    .compile("[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}");
    Matcher matcher = pattern.matcher("9");
    boolean isMathch = matcher.matches(); String[] $reg = new String[matcher.groupCount()]; for (int i = 0; i < matcher.groupCount(); i++) {
    $reg[i] = matcher.group(i);
    }
    for(int i= 0 ;i<$reg.length;i++) {
    System.out.println($reg[i].toString());
    } }}怎么样解决谢谢!!!!!!!
      

  12.   

    bao走入思路誤區
    lz也是
    大家都是
    為什么要把php的el改成java能用的?
    你直接把要求說下,從新寫個不久接了
      

  13.   

     我的任务就是把php改成java,哈哈
      

  14.   

    public static void main(String[] args) throws Exception { String pattern = "[0-9a-zA-Z]([GP][0-9]{2})[0-9a-zA-Z]{4}"; String str = "9P23AZ12";
    String[] $reg = ereg(pattern, str);
    for (int i = 0; i < $reg.length; i++)
    System.out.println($reg[i]); } public static String[] ereg(String pattern, String str) {
    ArrayList $reg = new ArrayList();
    Pattern patt = Pattern.compile(pattern, Pattern.MULTILINE);
    Matcher matcher = patt.matcher(str);
    if (matcher.find()) {
    for (int i = 0; i <= matcher.groupCount(); i++) {
    $reg.add(matcher.group(i));
    }
    } return (String[]) $reg.toArray(new String[$reg.size()]);
    }上面是 我 随便写的一个!   不过不知道是不是和POSIX风格表达式对应   你自己最好研究下