Java RegEx模式不匹配(适用于.NET)

时间:2010-04-27 19:10:40

标签: java regex

下面是一个在Java中产生异常(并且不匹配输入)的示例。也许我误解了JavaDoc,但它看起来应该有效。在C#中使用相同的模式和输入将产生匹配。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main { 
    public static void main(String[] args) {
        String pattern = "aspx\\?uid=([^']*)";      
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher("id='page.aspx?uid=123'");
        System.out.println(m.groupCount() > 0 ? m.group(1) : "No Matches");     
    }
}

编辑:我应该注意JavaDoc对Matcher.groupCount的说明如下:

  

小于的任何非负整数   或等于此返回的值   方法保证是有效的   该匹配器的组索引。

2 个答案:

答案 0 :(得分:3)

尝试拨打

m.find();

.matcher声明之后。

答案 1 :(得分:1)

它正在抛出异常,因为模式不匹配但你试图从中获取一个组(m.matches()在这里会是假的); groupCount()将返回匹配中的组数,无论是否存在匹配的组。至于为什么匹配不起作用,Java Patterns匹配整个字符串,而不是匹配子字符串