在与reg-ex匹配的字符串中查找一些文本

时间:2015-03-31 18:59:09

标签: java regex string

我正在寻找表格的句子。 “...... X在Y ...教育......”在文本文档的每一行的第三个字段中。 X是已知的,Y是未知的。     在成功的比赛中,我如何获得Y的值?以下是我的代码:

    Pattern p1 = Pattern.compile(".* educated at .*");
    int count = 0;

    while((line = br.readLine()) != null){
        String datavalue[] = line.split("\t");
        String text = datavalue[2];
        Matcher m = p1.matcher(text);
        if(m.matches()){
            count++;
            //System.out.println(text);
            //How do I get Y?

        }
    }

我是reg-ex的新手。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

将找到的文本作为一组捕获:

Pattern p1 = Pattern.compile(".* educated at (.*)");//note the parenthesis
int count = 0;

while((line = br.readLine()) != null){
    String datavalue[] = line.split("\t");
    String text = datavalue[2];
    Matcher m = p1.matcher(text);
    if(m.matches()){
        count++;
        System.out.println(m.group(1));

    }
}

有关详细信息,请参阅https://docs.oracle.com/javase/tutorial/essential/regex/groups.html

答案 1 :(得分:0)

您可以在一行中完成:

while((line = br.readLine()) != null){
    String y = line.replaceAll(".*?\t.*?\t{^\t]*educated at (\\w+).*|.*", "$1");

如果不匹配,变量y将为空。