在括号之间提取单词

时间:2012-04-16 09:31:14

标签: java regex string extract

我正在尝试解决一个相当容易的问题,但无法弄清楚如何正确使用正则表达式。我想从(括号)之间的文本文件中提取任何单词。这是我的尝试。任何正确方向的推动都会受到赞赏!!

public class Reader {

    public static void main(String[] args) {
        List<String> matchList = new ArrayList<String>();
        Pattern regex = Pattern.compile("\\{([^}]*)\\}");

        try{
            BufferedReader bufferedReader = new BufferedReader(new FileReader("test2.txt"));

            while(bufferedReader.readLine()!=null)
            {
                String parseMe = bufferedReader.readLine();

                Matcher regexMatcher = regex.matcher(parseMe);

                while (regexMatcher.find()) 
                {
                    matchList.add(regexMatcher.group());
                } 
            }
            System.out.println(matchList);
        }catch(IOException e){};
    }
}

2 个答案:

答案 0 :(得分:3)

你正在跳过每一行。阅读每一行。

String parseMe;
while((parseMe = bufferedReader.readLine()) != null) {
    Matcher regexMatcher = regex.matcher(parseMe);

我会删除try / catch块,因为它没有做任何有用的事情。您可以改为使用主thorws IOException

答案 1 :(得分:2)

正则表达式字符串应该(至少)是"[({\\[].*?[\\]})]"外部方括号是正则表达式语法 - 您要定义要查找的字符类。它并不完美,Java正则表达式中不可能有完全正确的解决方案(你不能考虑嵌套括号)。但是有一个开始:)顺便说一句,你可能会发现使用Eclipse Find来试验正则表达式很有用。它甚至得到了很好的内容帮助。