我正在尝试解决一个相当容易的问题,但无法弄清楚如何正确使用正则表达式。我想从(括号)之间的文本文件中提取任何单词。这是我的尝试。任何正确方向的推动都会受到赞赏!!
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){};
}
}
答案 0 :(得分:3)
你正在跳过每一行。阅读每一行。
String parseMe;
while((parseMe = bufferedReader.readLine()) != null) {
Matcher regexMatcher = regex.matcher(parseMe);
我会删除try / catch块,因为它没有做任何有用的事情。您可以改为使用主thorws IOException
。
答案 1 :(得分:2)
正则表达式字符串应该(至少)是"[({\\[].*?[\\]})]"
外部方括号是正则表达式语法 - 您要定义要查找的字符类。它并不完美,Java正则表达式中不可能有完全正确的解决方案(你不能考虑嵌套括号)。但是有一个开始:)顺便说一句,你可能会发现使用Eclipse Find来试验正则表达式很有用。它甚至得到了很好的内容帮助。