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

Java 使用regexp创建长度为n的标记器,java,regex,Java,Regex,我有一个文件,每行都写有这样的名字: subhash chand(线路馈电) yobie Chimwanachoma(线路馈送) riadh chaieb(线路馈电) 现在,如果我运行regexp搜索[a-z][a-z],它会返回“su bh as ch an yo…”。 是否有一个regexp模式可以返回“su ub ha as sh ch ha an nd…”形式的匹配项?此regexp的工作方式类似于长度为“2”的标记器。如果regexp是有效的Java regexp,那就太好了。尝试此r

我有一个文件,每行都写有这样的名字: subhash chand(线路馈电) yobie Chimwanachoma(线路馈送) riadh chaieb(线路馈电)

现在,如果我运行regexp搜索[a-z][a-z],它会返回“su bh as ch an yo…”。 是否有一个regexp模式可以返回“su ub ha as sh ch ha an nd…”形式的匹配项?此regexp的工作方式类似于长度为“2”的标记器。如果regexp是有效的Java regexp,那就太好了。

尝试此regex:

(?=([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));

}

您好,它返回的输出是“su bh as chan yo bi ch im wa na ch om am ri ad ch ai eb”,需要的输出是“su ub bh ha as sh ch ha and…”为什么它不匹配
bh
?@AshishJainYes,请原谅这个错误,所需的结果是每两个连续字符长度的标记:“su ub bh ha as sh ch ha and”@AshishJain查看编辑。这将返回一个更不匹配的结果,即仅“零长度匹配”。它不起作用。