サーチ…


備考

ここでの目標はコンテンツを失うことではないため、正規表現は入力を消費(一致)してはいけません。むしろ前のターゲット入力の最後の文字と次のターゲット入力の最初の文字との間で一致しなければなりません。例えば8文字の部分文字列の場合、以下の場所に入力を上げる(つまり一致させる)必要があります。

a b c d e f g h i j k l m n o p q r s t u v w x y z
               ^               ^               ^

文字の位置のに表示する必要があった入力内のスペースを無視します。

文字列を既知の長さの部分文字列に分割する

トリックは正規表現\Gを使ってルック・バックを使うことです。これは "前のマッチの終わり"を意味します:

String[] parts = str.split("(?<=\\G.{8})");

正規表現は、最後のマッチの終了後に8文字にマッチします。この場合、マッチはゼロ幅であるため、より簡単に「最後のマッチの後に8文字」と言うことができます。

便利なことに、 \Gは入力の開始に初期化されるので、入力の最初の部分に対しても機能します。

文字列を可変長の部分文字列に分割する

既知の長さの例と同じですが、lengthをregexに挿入します:

int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow