0

我正在尝试解决一个相当简单的问题,但不能完全弄清楚如何正确使用正则表达式。我想从(括号)之间的文本文件中提取任何单词。这是我正在进行的尝试。任何朝着正确方向的推动都将不胜感激!

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){};
    }
}
4

2 回答 2

3

您正在跳过每一行。每行读一次。

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

我会删除 try/catch 块,因为它没有做任何有用的事情。你可以用 mainthorws IOException代替。

于 2012-04-16T09:38:19.690 回答
2

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

于 2012-04-16T09:38:40.493 回答