Regex oder regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster bildet. Dieses Muster kann zur Durchführung verschiedener Aufgaben wie Validierung, Abgleich und Ersetzung usw. verwendet werden. In Java ist Regex ein wichtiges Werkzeug für den Umgang mit Strings. In diesem Artikel schauen wir uns an, wie man ein Regex-Muster für die Zeit erstellt.
Die Aufgabe besteht darin, ein Regex-Muster zu erstellen, das eine herkömmliche Uhrzeit im 12-Stunden-Format validieren kann, z. B. „12:00 Uhr“ oder „01:45 Uhr“.
public class Main {
public static void main(String[] args) {
// Test the pattern
System.out.println("12:30 PM".matches("^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$")); // returns true
}
}
Dieses Muster „^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$“ wird erstellt mit folgender Begründung:
– `1[0-2]|0?[1-9]`: Dieser Teil des Musters prüft die Stunde. Es erkennt jede Ziffer von 01-09 und 10-12. Die '0?' bedeutet, dass die führende Null optional ist.
– „:“ ist ein Literalsymbol, das mit dem Doppelpunkt in der Eingabe übereinstimmt.
– „[0-5][0-9]“: Dieser Teil prüft auf die Minuten. Es akzeptiert jede Zahl von 00 bis 59.
– „\s“: Entspricht einem Leerzeichen.
– „[AaPp][Mm]“ – Dieser Teil prüft entweder auf AM oder PM. Dadurch kann die Eingabe sowohl Klein- als auch Großbuchstaben akzeptieren.
Dieses Muster sorgt letztendlich für eine perfekt formatierte 12-Stunden-Zeit.
Java und Regex
Das Javac Die Sprache enthält seit der Version 1.4 Regex. Um Regex-Operationen zu erleichtern, hat Java „java.util.regex“ entwickelt, ein Paket mit drei Klassen: „Pattern“, „Matcher“ und „PatternSyntaxException“. Die Klasse „Pattern“ vereinfacht die Initiierung von Regex-Operationen, während die Klasse „Matcher“ für die Durchführung von Matching-Operationen erforderlich ist. Schließlich bezeichnet „PatternSyntaxException“, eine Unterklasse von „IllegalArgumentException“, jeden Syntaxfehler in einem regulären Ausdrucksmuster.
- „Pattern.compile(String regex)“: Diese statische Methode aus der Klasse „Pattern“ kompiliert den regulären Ausdruck und weist ihn einem Muster zu.
- „Pattern matcher(CharSequence input)“: Diese Instanzmethode erstellt einen Matcher, der den regulären Ausdruck mit der Eingabe abgleicht.
Entschlüsselung von Regex-Mustern
Greifen Regex Muster können aufgrund der häufigen Verwendung von Sonderzeichen zunächst abschreckend wirken. Bei genauerem Hinsehen lässt sich jedoch jedes Muster erkennen:
– „^“ ist ein Ankerzeichen, das den Anfang einer Zeile kennzeichnet. '$' bezeichnet das Ende. Zusammen stellen sie somit eine vollständige Zeichenfolgenübereinstimmung und nicht nur eine Teilzeichenfolgenübereinstimmung sicher.
– „1[0-2]|0?[1-9]“ entspricht einer beliebigen Ziffer von 01-09 oder 10-12. Mit „|“ übernimmt die Regex entweder den linken oder den rechten Operanden.
– „[0-5][0-9]“ ist ein Ziffernbereich, der jeder Ziffer von 00-59 entspricht.
– „s“ entspricht jedem Leerzeichen.
– Die Klammern „[ ]“ definieren eine Zeichenklasse, sodass Sie mehrere übereinstimmende Zeichen auflisten können.
Das Verständnis dieser einzelnen Bausteine eröffnet eine ganze Welt von Mustervergleichsmöglichkeiten und macht Regex zu einem leistungsstarken Werkzeug im Toolkit jedes Entwicklers.