第一次发帖。
首先,我知道如何同时使用模式匹配器和字符串拆分。我的问题是哪个最适合我在我的示例中使用,为什么?或提出更好的替代方案的建议。
任务:我需要在未知字符串中的两个已知正则表达式之间提取未知名词。
我的解决方案:获取名词的开头和结尾(来自 Regexp 1&2)和子字符串以提取名词。
String line = "unknownXoooXNOUNXccccccXunknown";
int goal = 12 ;
String regexp1 = "Xo+X";
String regexp2 = "Xc+X";
- 我需要在第一个正则表达式之后找到索引位置。
- 我需要在第二个正则表达式之前找到索引位置。
A)我可以使用模式匹配器
Pattern p = Pattern.compile(regexp1);
Matcher m = p.matcher(line);
if (m.find()) {
int afterRegex1 = m.end();
} else {
throw new IllegalArgumentException();
//TODO Exception Management;
}
B)我可以使用字符串拆分
String[] split = line.split(regex1,2);
if (split.length != 2) {
throw new UnsupportedOperationException();
//TODO Exception Management;
}
int afterRegex1 = line.indexOf(split[1]);
我应该使用哪种方法,为什么?我不知道哪个在时间和内存上更有效。两者都足够接近我自己的可读性。