【发布时间】:2018-10-26 20:36:23
【问题描述】:
我正在尝试创建简单的标记器,它可以在空格、小写标记上拆分,删除所有非字母字符,并且只保留包含 3 个或更多字符的术语。我编写了这段代码,它可以处理小写、非字母字符,并且只保留 3 个或更多字符。但是我想用split的方法,但是不知道怎么用。请提出一些建议。
public class main {
public static final String EXAMPLE_TEST = "This Mariana John bar Barr "
+ "12364 FFFFF aaaa a s d f g.";
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(\\s[a-z]{3,20})");
Matcher matcher = pattern.matcher(EXAMPLE_TEST);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
}
}
【问题讨论】:
-
1)
split不能小写结果。 --- 2) 您不能使用split来“删除所有非字母字符” 而不拆分它们,但您只说“拆分空格” ,例如输入abc1@3xyz会发生什么?应该返回abcxyz(非字母删除),还是返回abc和xyz? --- 如前所述,您的要求是不可能的。 -
我也很好奇,当您的正则表达式已经满足您的要求时,您为什么要使用
split()。 -
因为我被要求使用 split()
标签: java design-patterns split token tokenize