日期:2014-05-20 浏览次数:21037 次
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
List<String> results = new LinkedList<String>();
String str = "#endif /* DEV_CONFIG_H_ */\n" +
"// init function\n" +
"//---------am_init-------\n" +
"char* suit_am_init_NOTCALL_GN_01(void);\n" +
"//--------am_announce_device--------\n" +
"//--------am_announce_device-----max_call_number out of range--\n" +
"char* suit_am_announce_device_MCN_OR_GN_01(void);\n" +
"//--------am_announce_device-----max_insit_number out of range--\n" +
"char* suit_am_announce_device_MIN_OR_GN_01(void);\n" +
"//--------am_announce_device----default_reply_timeout set be 0--\n" +
"char* suit_am_announce_device_DRT_0_GN_01(void);\n" +
"//--------am_announce_device---max_credit out of range 8\n" +
"char* suit_am_announce_device_MC_OR_GN_01(void);";
Pattern pattern = Pattern.compile("char\\*(.+?)\\(void\\)");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
results.add(matcher.group(1));
}
for (String s : results) {
System.out.println(s);
}
}
}
------解决方案--------------------
代码逻辑有点错误,你的主体循环每次只能得到一行匹配内容,所以不能在循环内进行处理。
逻辑应该修改为: