-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheinstieg-in-regex-mit-java.html
79 lines (78 loc) · 25.8 KB
/
einstieg-in-regex-mit-java.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html><html lang="de-ch"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Einstieg in Regex mit Java - Finecloud</title><meta name="description" content="Was ist Regex? Regex steht für Regular expressions und ist eine Technik, Technologie und Sprache an und für sich, die verwendet werden kann zum Ausdrücken von Textmustern mit Symbolen. Und diese Symbole sind selbst Text. Damit lassen wir verschiedene Textteile und Zeichen andere Textfolgen darstellen. In…"><meta name="generator" content="Publii Open-Source CMS for Static Site"><link rel="stylesheet" href="https://www.finecloud.ch/media/plugins/syntaxHighlighter/prism-black.css"><link rel="canonical" href="https://www.finecloud.ch/einstieg-in-regex-mit-java.html"><link rel="alternate" type="application/atom+xml" href="https://www.finecloud.ch/feed.xml"><link rel="alternate" type="application/json" href="https://www.finecloud.ch/feed.json"><meta property="og:title" content="Einstieg in Regex mit Java"><meta property="og:site_name" content="Finecloud"><meta property="og:description" content="Was ist Regex? Regex steht für Regular expressions und ist eine Technik, Technologie und Sprache an und für sich, die verwendet werden kann zum Ausdrücken von Textmustern mit Symbolen. Und diese Symbole sind selbst Text. Damit lassen wir verschiedene Textteile und Zeichen andere Textfolgen darstellen. In…"><meta property="og:url" content="https://www.finecloud.ch/einstieg-in-regex-mit-java.html"><meta property="og:type" content="article"><link rel="shortcut icon" href="https://www.finecloud.ch/media/website/finecloud.png" type="image/png"><link rel="stylesheet" href="https://www.finecloud.ch/assets/css/style.css?v=39da73365516a098a9b73b721fc970e2"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.finecloud.ch/einstieg-in-regex-mit-java.html"},"headline":"Einstieg in Regex mit Java","datePublished":"2022-07-13T05:50","dateModified":"2022-07-14T05:55","description":"Was ist Regex? Regex steht für Regular expressions und ist eine Technik, Technologie und Sprache an und für sich, die verwendet werden kann zum Ausdrücken von Textmustern mit Symbolen. Und diese Symbole sind selbst Text. Damit lassen wir verschiedene Textteile und Zeichen andere Textfolgen darstellen. In…","author":{"@type":"Person","name":"Finecloud","url":"https://www.finecloud.ch/authors/finecloud/"},"publisher":{"@type":"Organization","name":"Finecloud"}}</script><meta name="google-site-verification" content="seFY9U12uiEq5U3_MyZiX6XWzk0AVFl9zITr2ZKsytY"></head><body><div class="site-container"><header class="top" id="js-header"><a class="logo" href="https://www.finecloud.ch/">Finecloud</a><nav class="navbar js-navbar"><button class="navbar__toggle js-toggle" aria-label="Menu" aria-haspopup="true" aria-expanded="false"><span class="navbar__toggle-box"><span class="navbar__toggle-inner">Menu</span></span></button><ul class="navbar__menu"><li><a href="https://www.finecloud.ch/" target="_self">Blog</a></li><li><a href="https://www.finecloud.ch/tags/" target="_self">Tags</a></li></ul></nav><div class="search"><div class="search__overlay js-search-overlay"><div class="search__overlay-inner"><form action="https://www.finecloud.ch/search.html" class="search__form"><input class="search__input js-search-input" type="search" name="q" placeholder="search..." aria-label="search..." autofocus="autofocus"></form><button class="search__close js-search-close" aria-label="Close">Close</button></div></div><button class="search__btn js-search-btn" aria-label="Search"><svg role="presentation" focusable="false"><use xlink:href="https://www.finecloud.ch/assets/svg/svg-map.svg#search"/></svg></button></div></header><main><article class="post"><div class="hero"><figure class="hero__image hero__image--overlay"><img src="https://www.finecloud.ch/media/website/download.jpg" srcset="https://www.finecloud.ch/media/website/responsive/download-xs.jpg 300w, https://www.finecloud.ch/media/website/responsive/download-sm.jpg 480w, https://www.finecloud.ch/media/website/responsive/download-md.jpg 768w, https://www.finecloud.ch/media/website/responsive/download-lg.jpg 1024w, https://www.finecloud.ch/media/website/responsive/download-xl.jpg 1360w, https://www.finecloud.ch/media/website/responsive/download-2xl.jpg 1600w" sizes="100vw" loading="eager" alt=""></figure><header class="hero__content"><div class="wrapper"><div class="post__meta"><time datetime="2022-07-13T05:50">Juli 13, 2022</time></div><h1>Einstieg in Regex mit Java</h1></div></header></div><div class="wrapper post__entry"><div class="post__toc"><h3>Table of Contents</h3><ul><li><a href="#mcetoc_1g7qsl72t8a">Was ist Regex?</a></li><li><a href="#mcetoc_1g7qsl72t8b">Einfaches Beispiel</a></li><li><a href="#mcetoc_1g7qsl72t8c">Negieren</a></li><li><a href="#mcetoc_1g7qsl72t8d">Anzahl Buchstaben</a></li><li><a href="#mcetoc_1g7tdih5q2e">Anzahl Zahlen</a></li><li><a href="#mcetoc_1g7tdih5q2f">Buchstaben und Zahlenfolge</a></li></ul></div><h2 id="mcetoc_1g7qsl72t8a">Was ist Regex?</h2><p>Regex steht für Regular expressions und ist eine Technik, Technologie und Sprache an und für sich, die verwendet werden kann zum Ausdrücken von Textmustern mit Symbolen. Und diese Symbole sind selbst Text. Damit lassen wir verschiedene Textteile und Zeichen andere Textfolgen darstellen.</p><h2 id="mcetoc_1g7qsl72t8b">Einfaches Beispiel</h2><p>In Java kann Regex Beispielsweise bei Strings angewendet werden, dazu verwenden wir die Methode <em>String.matches. </em>Das einfachste Beispiel, ist wenn wir mit Regex in einem String nach einem String suchen:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"cat"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"cat"</span>));
}
}</pre><p>Der Output ist ein Boolean Wert, in diesem Fall <em>true. </em>Was aber wenn wir nun eines der beiden cat gross schreiben? Der Boolean wird <em>false</em> sein, ausser wir passen den Regex Pattern so an, dass er Gross- und Kleinbuchstaben berücksichtigt:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"Cat"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"[Cc]at"</span>));
}
}
</pre><p>mit den eckigen Klammern [ ] kann eine OR Verknüpfung zwischen Zeichen definiert werden.</p><p>Wenn wir ein Pattern wollen, um zu prüfen ob das Wort mit einem Buchstaben von a bis f startet könnten wir entweder alle Buchstaben in der eckigen Klammer ausschreiben. Dafür gibt es glücklicherweise eine schönere Möglichkeit, wir können Ranges angeben:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"Fat"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"[a-fA-F]at"</span>));
}
}</pre><h2 id="mcetoc_1g7qsl72t8c">Negieren</h2><p>Was wenn wir einen Pattern wollen der prüft ob etwas <strong>nicht</strong> zutrifft. Zum Beispiel ob der Erste Buchstaben des Wortes nicht ein Buchstabe von a bis f ist:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"Fat"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"[^a-fA-F]at"</span>));
}
}</pre><p>Das Ergebnis ist nun <em>false</em>. Das Zeichen am Anfang nennt sich "Caret".</p><h2 id="mcetoc_1g7qsl72t8d">Anzahl Buchstaben</h2><p>Wenn wir nun ein Pattern suchen, der prüft ob unser String aus nur drei latinischen Buchstaben besteht: </p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"Fat"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\w\\w\\w"</span>));
}
}</pre><p>Der reine Regex Pattern besteht nur aus einem \ (Backslash). Damit wir diesen in Java nutzen können, müssen wir jedoch den Backslash mit einem zweiten Backslash escapen, damit Java den Backslash nicht als Java, sondern als Regex Pattern erkennen kann.</p><p class="msg msg--highlight">Der Regex-Pattern für Buchstaben (\w) wertet nicht nur Buchstaben von a bis z als Valid, sondern auch Zahlen und '_' (underscore).</p><h2 id="mcetoc_1g7tdih5q2e">Anzahl Zahlen</h2><p>Dasselbe geht auch, wenn wir einen Pattern für die Anzahl Zahlen definieren:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"521"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d\\d\\d"</span>));
}
}</pre><h2 id="mcetoc_1g7tdih5q2f">Buchstaben und Zahlenfolge</h2><p>Was wenn wir nun eine Sammlung von Nummern auf das folgende Format prüfen müssen: <em>523-231-4444</em> (alle Zahlen sind erlaubt). Wir könnten dazu einfach aus Faulheit folgenden Pattern definieren:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523-231-4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\d\d\d-\d\d\d-\d\d\d\d"</span>));
}
}</pre><p>Das ist ein Valider Pattern der die Problemstellung löst. Allerdings geht das schöner und einfacher mit dem Quantifier { }:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523-231-4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\d{3}-\d{3}-\d{4}"</span>));
}
}</pre><p>Viel besser oder? Was wenn wir nun nicht nur die Bindestriche, sondern auch z.B. Punkte als Trennzeichen akzeptieren wollen? Dann können wir eine Or Verknüpfung machen anhand des oberen Beispiels:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523-231.4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\d{3}[-.]\d{3}[-.]\d{4}"</span>));
}
}</pre><p>Was ist nun wenn wir Leerzeichen (523-231.4444) zwischen den Nummern als Valid behandeln wollen? Theoretisch können wir nun in der Or Verknüpfung (in den eckigen Klammern) einfach ein Leerzeichen einfügen. Das funktioniert, ist aber Optisch nicht ideal, da das Leerzeichen schnell übersehen wird. Expliziter geht das mit \s als Regex Zeichen für einen Leerschlag:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523 231.4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d{3}[-.\\s]\\d{3}[-.\\s]\\d{4}"</span>));
}
}</pre><p>Wenn mehr als ein Leerschlag, Bindestrich oder Punkt erlaubt ist, kann hinter der "Or"-Klammer einfach ein Plus angefügt werden:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523 ..231 4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d{3}[-.\\s]+\\d{3}[-.\\s]+\\d{4}"</span>));
}
}</pre><p>Was wenn keines, eines oder mehrere dieser "Or"-Verknüpften Zeichen erlaubt sein sollen? Wir verwenden '*' anstelle von '+':</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523231 .4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d{3}[-.\\s]*\\d{3}[-.\\s]*\\d{4}"</span>));
}
}</pre><p>Was ist nun wenn wir genau nur eines oder keines dieser Zeichen erlauben wollen? Wir verwenden '?' anstelle von '*':</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523231-4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{4}"</span>));
}
}</pre><p>Was, wenn wir in der letzten Zahlenfolge nur 3 oder 4 Zeichen erlauben wollen? </p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523231-4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"\\d{3}[-.\\s]?\\d{3}[-.\\s]?\\d{3,4}"</span>));
}
}</pre><p>Wenn wir mindestens drei Stellen brauchen, aber es auch unbeschränkt mehr sein dürfen, können wir die zweite Zahl nach dem Komma einfach weglassen. Was wir weiter optimieren können ist, dass wir die Wiederholungen von Regex Statements zusammenfassen und nur einmal deklarieren. Dazu löschen wir eines der beiden "\d{3}[-.\s]?" Statements und setzen es im runde Klammern, gefolgt von Spitzen klammern, in der wir die Anzahl Wiederholungen angeben, in diesem Fall 2:</p><pre class="hljs" style="color: #a9b7c6; background: #282b2e none repeat scroll 0% 0%; display: block; overflow-x: auto; padding: 0.5em;"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #cc7832;">class</span> <span class="hljs-title" style="color: #ffc66d;">RegexPractice</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #cc7832;">public</span> <span class="hljs-keyword" style="color: #cc7832;">static</span> <span class="hljs-keyword" style="color: #cc7832;">void</span> <span class="hljs-title" style="color: #ffc66d;">main</span><span class="hljs-params">(String[] args)</span> </span>{
System.out.println(<span class="hljs-string" style="color: #6a8759;">"523 231 4444"</span>.matches(<span class="hljs-string" style="color: #6a8759;">"(\\d{3}[-.\\s]?){2}\\d{3,}"</span>));
}
}</pre><p>Genial, oder?</p></div><footer class="wrapper post__footer"><p class="post__last-updated">This article was updated on Juli 14, 2022</p><ul class="post__tag"><li><a href="https://www.finecloud.ch/tags/java/">java</a></li><li><a href="https://www.finecloud.ch/tags/java-basics/">java basics</a></li><li><a href="https://www.finecloud.ch/tags/regex/">regex</a></li><li><a href="https://www.finecloud.ch/tags/softwareentwicklung/">software development</a></li></ul><div class="post__share"></div></footer></article><nav class="post__nav"><div class="post__nav-inner"><div class="post__nav-prev"><svg width="1.041em" height="0.416em" aria-hidden="true"><use xlink:href="https://www.finecloud.ch/assets/svg/svg-map.svg#arrow-prev"/></svg> <a href="https://www.finecloud.ch/java-access-modifier.html" class="post__nav-link" rel="prev"><span>Previous</span> Java Access-Modifier</a></div><div class="post__nav-next"><a href="https://www.finecloud.ch/capture-groups-in-java.html" class="post__nav-link" rel="next"><span>Next</span> Capture Groups in Java </a><svg width="1.041em" height="0.416em" aria-hidden="true"><use xlink:href="https://www.finecloud.ch/assets/svg/svg-map.svg#arrow-next"/></svg></div></div></nav><div class="post__related related"><div class="wrapper"><h2 class="h5 related__title">You should also read:</h2><article class="related__item"><div class="feed__meta"><time datetime="2022-05-26T14:07" class="feed__date">Mai 26, 2022</time></div><h3 class="h1"><a href="https://www.finecloud.ch/java-collection-iteratoren.html">Java Collection Iteratoren</a></h3></article><article class="related__item"><div class="feed__meta"><time datetime="2022-05-26T13:28" class="feed__date">Mai 26, 2022</time></div><h3 class="h1"><a href="https://www.finecloud.ch/java-collection-sets.html">Java Collection Sets</a></h3></article><article class="related__item"><div class="feed__meta"><time datetime="2022-05-26T13:19" class="feed__date">Mai 26, 2022</time></div><h3 class="h1"><a href="https://www.finecloud.ch/java-collection-listen.html">Java Collection Listen</a></h3></article></div></div></main><footer class="footer"><div class="footer__copyright"><p>Powered by Publii</p></div><button onclick="backToTopFunction()" id="backToTop" class="footer__bttop" aria-label="Back to top" title="Back to top"><svg><use xlink:href="https://www.finecloud.ch/assets/svg/svg-map.svg#toparrow"/></svg></button></footer></div><script>window.publiiThemeMenuConfig = {
mobileMenuMode: 'sidebar',
animationSpeed: 300,
submenuWidth: 'auto',
doubleClickTime: 500,
mobileMenuExpandableSubmenus: true,
relatedContainerForOverlayMenuSelector: '.top',
};</script><script defer="defer" src="https://www.finecloud.ch/assets/js/scripts.min.js?v=6ca8b60e6534a3888de1205e82df8528"></script><script>var images = document.querySelectorAll('img[loading]');
for (var i = 0; i < images.length; i++) {
if (images[i].complete) {
images[i].classList.add('is-loaded');
} else {
images[i].addEventListener('load', function () {
this.classList.add('is-loaded');
}, false);
}
}</script><script defer="defer" src="https://www.finecloud.ch/media/plugins/syntaxHighlighter/prism.js"></script></body></html>