正则表达式不匹配

时间:2014-08-09 12:40:47

标签: java regex

我需要为字符串定义一个模式,并在java eclipse环境中查找句子中的所有匹配项。 这在我的代码中:

public static final String EXAMPLE_TEST = "MD_pos ";
public static final String REGEX ="(RB_pos)?(MD_pos|VB_pos|VBD_pos|VBP_pos|VBZ_pos|VBG_pos|VBN_pos) (RP_pos)? (RB_pos)? ";

public void PatMat() {

    Pattern pattern = Pattern.compile(REGEX);
    Matcher matcher = pattern.matcher(EXAMPLE_TEST);

    int count = 0;
    while(matcher.find()) {
        count++;
        System.out.println("found: " + count + " : "
            + matcher.start() + " - " + matcher.end());
        System.out.println("found: " + matcher.group());  
    }
}

带有?登录模式的部分是可选的,因此应匹配MD_pos。但是每当我调用这个方法时,控制台都没有结果。

2 个答案:

答案 0 :(得分:5)

您的REGEX包含三个非可选空格,这些空格不在您尝试匹配的示例字符串中。

答案 1 :(得分:1)

您忘记在COMMENTS模式下编译,因此会忽略空格。

Pattern pattern = Pattern.compile(REGEX, Pattern.COMMENTS);