【发布时间】:2017-10-11 15:12:47
【问题描述】:
我在一个文件中包含 n 次以下模式:
ENUM CMF_QUOTE_EVENT
CMF_QUOTE_EVENT_Activate "Activate"
CMF_QUOTE_EVENT_Suspend "Suspend"
CMF_QUOTE_EVENT_Delete "Delete"
ENDENUM
我的目标是捕获枚举的所有值。基本上我需要关键字“ENUM”和“ENDENUM”之间的三行。
我尝试为此使用多行正则表达式,但我仍然无法捕捉到它。 这是我做的:
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null)
{
sb.append(line.replace("\\s",""); // delete tabs and ws
}
Pattern pattern= Pattern.compile("ENUM(.*)(.|\\s)*ENDENUM", Pattern.MULTILINE);
Matcher match = pattern.matcher(sb.toString());
while (match.find())
{
// do something
}
br.close();
我想改用语法,但它看起来很重,仅用于此用途。我可以用正则表达式做这种事情吗?
谢谢大家
【问题讨论】:
-
使用
Pattern.DOTALL -
我不会为此使用正则表达式。只是我的意见。