2016-04-12 3 views
1

so zum Beispiel in dieser Zeichenfolge "3F, 4B, AA, A4B" Ich möchte ein Regex-Muster, das 3F, 4B und AA erfassen könnte. Die Anzahl der Zeichen zwischen den Kommas muss 2 sein. Die einzige Ausnahme ist, dass wenn beide Zeichen Zahlen sind, wir nicht akzeptieren wollen. Leerzeichen sind uns auch egal.Regex Muster, um nur zwei Zeichen zwischen Kommas in Java

Antwort

1

können Sie diesen Look-Ahead-regex verwenden:

\b([a-zA-Z][a-zA-Z\d]|\d[a-zA-Z])(?=\s*,) 
  • \b ist für Wortgrenze.
  • positive Lookahead, (?=\s*,) zu behaupten, es gibt folgende , nach 2 Zeichen.
  • ([a-zA-Z][a-zA-Z\d]|\d[a-zA-Z]), um sicherzustellen, wir mindestens ein Alphabet in 2 Zeichen

in Java verwenden: erfassen Dies wird

\b(\d[a-z]|[a-z]\d|[a-z]{2})(?=\b) 

:

Pattern p = Pattern.compile("\\b([a-zA-Z][a-zA-Z\\d]|\\d[a-zA-Z])(?=\\s*,)"); 

RegEx Demo

+0

Vielen Dank! Ich habe nur eine Folgefrage .... ist es möglich, diese Regex die gesamte Zeichenfolge (einschließlich Kommas) akzeptieren, wenn alle Werte zwischen den Kommas gültig sind? (2 Zeichen, mindestens eins ist alphabetisch) – splay

+0

Sie können ['\ b (?: (?: [A-zA-Z] [a-zA-Z \ d] | \ d [a-zA-Z] verwenden) \ s *, \ s *) + '] (https://regex101.com/r/yZ5zu2/2), um der vollständigen Zeichenfolge einschließlich Kommas zu entsprechen. Außerdem müssen Sie das Akzeptanzzeichen nicht entfernen, um eine Frage stellen zu können. Sie können hier Kommentare hinterlassen und ich werde versuchen zu antworten, wenn ich online bin, auch nachdem ich die Antwort akzeptiert habe. – anubhava

0

Versuchen folgende regex nur zwei aus je einem zusammengesetzte Buchstaben Alphanumerisch oder nur Alpha.

Siehe Demo unter Regex101