start()
とend()
の定義でMatcherに関するJavaのドキュメントとちょっと混乱しています。インデックスとオフセットはJava Regexで異なる意味を持ちますか?
以下のコードを検討:上記
public static void test()
{
String candidate = "stackoverflow";
Pattern p = Pattern.compile("s");
Matcher m = p.matcher(candidate);
m.find();
int index = m.start();
out.println("Index from Match\t"+index);
int offset = m.end();
out.println("Offset from match\t"+offset);
}
を次の結果を返します。
私はすべてのchar配列や文字列はインデックス0で開始され、それが上記の式に右だ学んだように試合1
から一致オフセット0
からのインデックス。 しかし、オフセットは同じ文字の 'を返しますが、なぜ1で始まるのですか?
"**最後の文字が一致した後のオフセット**を返します"? – erikxiv
インデックス・オフセット・セマンティクスではありません。どちらもインデックスであり、開始位置の1つ、終了位置を過ぎた1つのインデックスです。 'String.substring'のように –