我正在尝试在 JTextArea 中的选择范围内进行匹配,并且我正在使用 Matcher.region() 来定义匹配的边界:
JTextComponent t;
Pattern p = Pattern.compile("string", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher m = p.matcher(t.getText()).region(t.getSelectionStart(), t.getSelectionEnd());
m.useAnchoringBounds(false);
if(m.find()) {
System.out.println("Found match from " + m.start() + " to " + m.end());
}
else {
System.out.println("No match found");
}
上述工作按预期工作,它将找到该区域内的第一个匹配项 - 如果未找到匹配项,则找不到匹配项。
但是,我正在尝试遍历区域内的匹配项(搜索和替换类型函数),如果我指定了区域内的 find() 起始位置,则它匹配区域外:
int cPos = m.regionStart();
if (m.find(cPos) || m.find(m.regionStart())) {
System.out.println("Found match from " + m.start() + " to " + m.end());
cPos = m.end();
}
else {
System.out.println("No match found");
}
如果我指定起始位置,这是一个错误还是我破坏了该区域 - 即使它包含在该区域内?
谢谢,克里斯