/ / Regulärer Ausdruck java, um das Gleichgewicht aus einer Zeichenkette zu extrahieren - Java, Regex, Mustervergleich, Matcher

Regulärer Ausdruck Java, um das Gleichgewicht aus einer Zeichenfolge zu extrahieren - Java, Regex, Mustervergleich, Matcher

Ich habe eine Zeichenfolge, die enthält " Dear user BAL= 1,234/ ".
Ich möchte extrahieren 1,234 aus dem String mit dem regulären Ausdruck. Es kann sein 1,23, 1,2345, 5,213 oder 500

final Pattern p=Pattern.compile("((BAL)=*(\s{1}\w+))");
final Matcherm m = p.matcher(text);
if(m.find())
return m.group(3);
else
return "";

Dies kehrt zurück 3.
Welchen regulären Ausdruck soll ich machen? Ich bin neu in reguläre Ausdrücke.

Antworten:

1 für die Antwort № 1

Sie suchen in Ihrer Regex nach Wortzeichen w+ aber Sie sollten nach Ziffern mit suchen d+.

Zusätzlich gibt es das Komma, also musst du das auch anpassen.

Ich würde es benutzen

/.BAL = s ([d,] + (? = /))./

als Muster und erhalte nur die Nummer in der resultierenden Gruppe.

Erläuterung: .* passe alles vorher an BAL= Finde den String "BAL =" s Passen Sie ein Leerzeichen an ( Starten Sie die passende Gruppe [d,]+ passt jede Ziffer oder jedes Komma ein oder mehrmals an (?=/) passen Sie die erstere nur dann an, wenn ein Schrägstrich folgt ) Ende übereinstimmende Gruppe .* stimmt mit allem überein

Dies ist nicht belegt, sollte aber so funktionieren:

final Pattern p=Pattern.compile(".*BAL=\s([\d,]+(?=/)).*");
final Matcherm m = p.matcher(text);
if(m.find())
return m.group(1);
else
return "";

Laut einem Onlinetester, das obige Muster stimmt mit dem Text überein:

BAL= 1,234/

0 für die Antwort № 2

Wenn es nicht durch den regulären Ausdruck extrahiert werden müsste, könnten Sie einfach Folgendes tun:

// split on any whitespace into a 4-element array
String[] foo = text.split("\s+");
return foo[3];