Sök…


Anmärkningar

Målet här är att inte tappa innehåll, så regexen får inte konsumera (matcha) någon inmatning. Snarare måste den matcha mellan det sista tecknet i den föregående målinmatningen och det första tecknet i nästa målinmatning. till exempel för 8-karaktärsunderlag måste vi bryta inmatningen (dvs. matchning) på de platser som är markerade nedan:

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
               ^               ^               ^

Ignorera mellanrummen i ingången som krävs för att visa mellan teckenpositioner.

Bryt en sträng upp i underlag med en känd längd

Tricket är att använda en look-bak med regex \G , vilket betyder "slutet på föregående match":

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

Regexet matchar 8 tecken efter slutet av den sista matchen. Eftersom i detta fall matchen är nollbredd, kan vi mer enkelt säga "8 tecken efter den sista matchen".

Bekvämt initialiseras \G att börja ingången, så det fungerar även för den första delen av ingången.

Bryt en sträng upp i underlag med alla variabla längder

Samma som känt längdsexempel, men sätt in längden i regex:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow