使用regexp创建的长度为n的标记化器

时间:2017-10-21 10:55:29

标签: java regex

我有一个文件,每行写的名字如下: subhash chand(换行) yobie chimwanachomama(换行) riadh chaieb(换行)

现在,如果我运行regexp搜索[a-z] [a-z],它会返回“su bh as ch an yo ...”。 是否有一个正则表达式模式可以返回这种形式的匹配“”su hab ha as sh ch ha nd ...“?这个正则表达式就像长度为'2'的标记化器一样。如果regexp是一个有效的Java正则表达式会很棒

1 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

(?=([a-zA-Z]{2}))

这将在字符串中向前看,如果后面的字符串与[a-zA-Z]{2}匹配,则匹配空字符串,然后将其后的2个字符放入组中。由于引擎会检查每个索引,这将返回您的预期结果。

你只需要获得比赛的所有组1

final String regex = "(?=([a-zA-Z]{2}))";
final String string = "subhash chand\n"
        + "yobie chimwanachomama\n"
        + "riadh chaieb";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println(matcher.group(1));

}

Try it here!