Matcher在与regexp模式类似的文本中找不到任何内容

时间:2013-04-02 20:10:54

标签: java regex

每次我需要使用regexp时,我都会遇到类似的问题。他们只是不适合我,我不知道我做错了什么。

我有一个文字行:

  

插入base(db)arg(任何可能的int );

这些行最后也可能包含评论。我需要的是找到这样的线条。以下是我尝试这样做的方法:

@Test
public void test() {
    String UPDATE_REGEXP = "insert into base (db) arg (\\d*+)";
    String sample = "insert into base (db) arg (100);";
    Pattern pattern = Pattern.compile(UPDATE_REGEXP);

    Matcher matcher = pattern.matcher(sample);

    if(matcher.find()) {
        System.out.println(matcher.group());
    } else {
        fail();
    }
}

我也尝试过最简单的正则表达式:

  

String UPDATE_REGEXP =“insert into base(db)arg”;

但是这个测试总是失败。我的错在哪里?

1 个答案:

答案 0 :(得分:5)

您需要转义括号,因为它们在RegEx中为special characters(例如,它们用于创建groups)。尝试

String UPDATE_REGEXP = "insert into base \\(db\\) arg \\(\\d*+\\)";