{"id":64,"date":"2025-09-24T22:25:48","date_gmt":"2025-09-24T20:25:48","guid":{"rendered":"http:\/\/python-ai.pl\/?p=64"},"modified":"2025-09-24T22:25:48","modified_gmt":"2025-09-24T20:25:48","slug":"wyrazenia-regularne","status":"publish","type":"post","link":"https:\/\/python-ai.pl\/?p=64","title":{"rendered":"Wyra\u017cenia regularne"},"content":{"rendered":"\n<div class=\"wp-block-group has-background\" style=\"background:radial-gradient(rgb(2,3,129) 2%,rgb(255,255,255) 48%,rgb(40,116,252) 100%)\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\">Wyra\u017cenia regularne w Pythonie<\/h4>\n\n\n\n<p>Wyra\u017cenia regularne (regex) to pot\u0119\u017cne narz\u0119dzie do wyszukiwania, dopasowywania i manipulacji tekstem.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Modu\u0142 re:<\/h4>\n\n\n\n<p>Python u\u017cywa modu\u0142u <code>re<\/code> do pracy z wyra\u017ceniami regularnymi.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\n# Podstawowe wyszukiwanie\ntext = &quot;Python jest \u015bwietnym j\u0119zykiem programowania&quot;\npattern = r&quot;Python&quot;\n\n# Sprawdzanie czy wzorzec wyst\u0119puje\nif re.search(pattern, text):\n    print(&quot;Znaleziono 'Python'&quot;)\n\n# Znajdowanie wszystkich wyst\u0105pie\u0144\nmatches = re.findall(pattern, text)\nprint(matches)  # &#91;'Python'&#93;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Podstawowe wyszukiwanie<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Python jest \u015bwietnym j\u0119zykiem programowania&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Sprawdzanie czy wzorzec wyst\u0119puje<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> re.search(pattern, text):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Znaleziono &#39;Python&#39;&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Znajdowanie wszystkich wyst\u0105pie\u0144<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Python&#39;&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Podstawowe wzorce:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;Mam 25 lat, telefon: 123-456-789, email: jan@example.com&quot;\n\n# Cyfry\npattern = r&quot;\\d+&quot;  # Jedna lub wi\u0119cej cyfr\nnumbers = re.findall(pattern, text)\nprint(numbers)  # &#91;'25', '123', '456', '789'&#93;\n\n# Litery\npattern = r&quot;&#91;a-zA-Z&#93;+&quot;  # Jedna lub wi\u0119cej liter\nwords = re.findall(pattern, text)\nprint(words)  # &#91;'Mam', 'lat', 'telefon', 'email', 'jan', 'example', 'com'&#93;\n\n# S\u0142owa (litery i cyfry)\npattern = r&quot;\\w+&quot;  # Jedna lub wi\u0119cej znak\u00f3w alfanumerycznych\nwords = re.findall(pattern, text)\nprint(words)  # &#91;'Mam', '25', 'lat', 'telefon', '123', '456', '789', 'email', 'jan', 'example', 'com'&#93;\n\n# Spacje\npattern = r&quot;\\s+&quot;  # Jedna lub wi\u0119cej spacji\nspaces = re.findall(pattern, text)\nprint(spaces)  # &#91;' ', ' ', ' ', ' ', ' ', ' '&#93;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Mam 25 lat, telefon: 123-456-789, email: jan@example.com&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Cyfry<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\d<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Jedna lub wi\u0119cej cyfr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">numbers = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(numbers)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;25&#39;, &#39;123&#39;, &#39;456&#39;, &#39;789&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Litery<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">a-zA-Z<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Jedna lub wi\u0119cej liter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">words = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(words)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Mam&#39;, &#39;lat&#39;, &#39;telefon&#39;, &#39;email&#39;, &#39;jan&#39;, &#39;example&#39;, &#39;com&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># S\u0142owa (litery i cyfry)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Jedna lub wi\u0119cej znak\u00f3w alfanumerycznych<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">words = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(words)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Mam&#39;, &#39;25&#39;, &#39;lat&#39;, &#39;telefon&#39;, &#39;123&#39;, &#39;456&#39;, &#39;789&#39;, &#39;email&#39;, &#39;jan&#39;, &#39;example&#39;, &#39;com&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Spacje<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\s<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Jedna lub wi\u0119cej spacji<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">spaces = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(spaces)  <\/span><span style=\"color: #6A9955\"># &#91;&#39; &#39;, &#39; &#39;, &#39; &#39;, &#39; &#39;, &#39; &#39;, &#39; &#39;&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Znaki specjalne:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;Cena: $19.99, Rabat: 20%, Kod: ABC-123&quot;\n\n# Znaki specjalne - trzeba je eskejpowa\u0107\npattern = r&quot;\\$\\d+\\.\\d+&quot;  # Cena w dolarach\nprices = re.findall(pattern, text)\nprint(prices)  # &#91;'$19.99'&#93;\n\n# Procenty\npattern = r&quot;\\d+%&quot;  # Liczba + znak %\npercentages = re.findall(pattern, text)\nprint(percentages)  # &#91;'20%'&#93;\n\n# Kody z my\u015blnikami\npattern = r&quot;&#91;A-Z&#93;{3}-\\d{3}&quot;  # 3 litery + my\u015blnik + 3 cyfry\ncodes = re.findall(pattern, text)\nprint(codes)  # &#91;'ABC-123'&#93;\n\n# R\u00f3\u017cne znaki\npattern = r&quot;&#91;A-Za-z0-9._%+-&#93;+@&#91;A-Za-z0-9.-&#93;+\\.&#91;A-Za-z&#93;{2,}&quot;  # Email\nemails = re.findall(pattern, text)\nprint(emails)  # [] (brak emaili w tym tek\u015bcie)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Cena: $19.99, Rabat: 20%, Kod: ABC-123&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Znaki specjalne - trzeba je eskejpowa\u0107<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D7BA7D\">\\$<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">+\\.<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Cena w dolarach<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">prices = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(prices)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;$19.99&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Procenty<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\d<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">%&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Liczba + znak %<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">percentages = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(percentages)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;20%&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Kody z my\u015blnikami<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">A-Z<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">{3}<\/span><span style=\"color: #D16969\">-\\d<\/span><span style=\"color: #D7BA7D\">{3}<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># 3 litery + my\u015blnik + 3 cyfry<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">codes = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(codes)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;ABC-123&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># R\u00f3\u017cne znaki<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">A-Za-z0-9._%+-<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">@<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">A-Za-z0-9.-<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">+\\.<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">A-Za-z<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">{2,}<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Email<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">emails = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(emails)  <\/span><span style=\"color: #6A9955\"># [] (brak emaili w tym tek\u015bcie)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Kwantytory (ilo\u015bci):<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;a aa aaa aaaa aaaaa&quot;\n\n# R\u00f3\u017cne kwantytory\npatterns = &#91;\n    r&quot;a&quot;,      # Jedna litera 'a'\n    r&quot;a+&quot;,     # Jedna lub wi\u0119cej 'a'\n    r&quot;a*&quot;,     # Zero lub wi\u0119cej 'a'\n    r&quot;a?&quot;,     # Zero lub jedna 'a'\n    r&quot;a{2}&quot;,   # Dok\u0142adnie 2 'a'\n    r&quot;a{2,}&quot;,  # 2 lub wi\u0119cej 'a'\n    r&quot;a{2,4}&quot;  # Od 2 do 4 'a'\n&#93;\n\nfor pattern in patterns:\n    matches = re.findall(pattern, text)\n    print(f&quot;{pattern}: {matches}&quot;)\n\n# Wynik:\n# a: &#91;'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'&#93;\n# a+: &#91;'a', 'aa', 'aaa', 'aaaa', 'aaaaa'&#93;\n# a*: &#91;'a', ' ', 'aa', ' ', 'aaa', ' ', 'aaaa', ' ', 'aaaaa', ''&#93;\n# a?: &#91;'a', '', 'a', 'a', '', 'a', 'a', 'a', '', 'a', 'a', 'a', 'a', '', 'a', 'a', 'a', 'a', 'a', ''&#93;\n# a{2}: &#91;'aa', 'aa', 'aa', 'aa'&#93;\n# a{2,}: &#91;'aa', 'aaa', 'aaaa', 'aaaaa'&#93;\n# a{2,4}: &#91;'aa', 'aaa', 'aaaa', 'aaaa'&#93;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;a aa aaa aaaa aaaaa&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># R\u00f3\u017cne kwantytory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">patterns = &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a&quot;<\/span><span style=\"color: #D4D4D4\">,      <\/span><span style=\"color: #6A9955\"># Jedna litera &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #6A9955\"># Jedna lub wi\u0119cej &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">*<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #6A9955\"># Zero lub wi\u0119cej &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #6A9955\"># Zero lub jedna &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #6A9955\"># Dok\u0142adnie 2 &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">{2,}<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #6A9955\"># 2 lub wi\u0119cej &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;a<\/span><span style=\"color: #D7BA7D\">{2,4}<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Od 2 do 4 &#39;a&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> pattern <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> patterns:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    matches = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">pattern<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">matches<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Wynik:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a: &#91;&#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a+: &#91;&#39;a&#39;, &#39;aa&#39;, &#39;aaa&#39;, &#39;aaaa&#39;, &#39;aaaaa&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a*: &#91;&#39;a&#39;, &#39; &#39;, &#39;aa&#39;, &#39; &#39;, &#39;aaa&#39;, &#39; &#39;, &#39;aaaa&#39;, &#39; &#39;, &#39;aaaaa&#39;, &#39;&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a?: &#91;&#39;a&#39;, &#39;&#39;, &#39;a&#39;, &#39;a&#39;, &#39;&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a{2}: &#91;&#39;aa&#39;, &#39;aa&#39;, &#39;aa&#39;, &#39;aa&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a{2,}: &#91;&#39;aa&#39;, &#39;aaa&#39;, &#39;aaaa&#39;, &#39;aaaaa&#39;&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># a{2,4}: &#91;&#39;aa&#39;, &#39;aaa&#39;, &#39;aaaa&#39;, &#39;aaaa&#39;&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Grupy i referencje:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;Jan Kowalski, Anna Nowak, Piotr Wi\u015bniewski&quot;\n\n# Grupy - nawiasy okr\u0105g\u0142e\npattern = r&quot;(\\w+) (\\w+)&quot;  # Imi\u0119 i nazwisko\nmatches = re.findall(pattern, text)\nprint(matches)  # &#91;('Jan', 'Kowalski'), ('Anna', 'Nowak'), ('Piotr', 'Wi\u015bniewski')&#93;\n\n# Grupy z nazwami\npattern = r&quot;(?P\\w+) (?P\\w+)&quot;\nmatches = re.finditer(pattern, text)\nfor match in matches:\n    print(f&quot;Imi\u0119: {match.group('imie')}, Nazwisko: {match.group('nazwisko')}&quot;)\n\n# Referencje do grup\ntext = &quot;Python 3.9, Python 3.10, Python 3.11&quot;\npattern = r&quot;Python (\\d+\\.\\d+)&quot;\nmatches = re.findall(pattern, text)\nprint(matches)  # &#91;'3.9', '3.10', '3.11'&#93;\n\n# Zamiana z referencjami\nnew_text = re.sub(pattern, r&quot;Python wersja \\1&quot;, text)\nprint(new_text)  # Python wersja 3.9, Python wersja 3.10, Python wersja 3.11\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Jan Kowalski, Anna Nowak, Piotr Wi\u015bniewski&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Grupy - nawiasy okr\u0105g\u0142e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">(<\/span><span style=\"color: #D16969\">\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">(<\/span><span style=\"color: #D16969\">\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Imi\u0119 i nazwisko<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;(&#39;Jan&#39;, &#39;Kowalski&#39;), (&#39;Anna&#39;, &#39;Nowak&#39;), (&#39;Piotr&#39;, &#39;Wi\u015bniewski&#39;)&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Grupy z nazwami<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">(<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">P\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">(<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">P\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.finditer(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> match <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> matches:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Imi\u0119: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.group(<\/span><span style=\"color: #CE9178\">&#39;imie&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">, Nazwisko: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.group(<\/span><span style=\"color: #CE9178\">&#39;nazwisko&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Referencje do grup<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Python 3.9, Python 3.10, Python 3.11&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python <\/span><span style=\"color: #CE9178\">(<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">+\\.<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;3.9&#39;, &#39;3.10&#39;, &#39;3.11&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Zamiana z referencjami<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">new_text = re.sub(pattern, <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python wersja <\/span><span style=\"color: #569CD6\">\\1<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(new_text)  <\/span><span style=\"color: #6A9955\"># Python wersja 3.9, Python wersja 3.10, Python wersja 3.11<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Funkcje modu\u0142u re:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;Python jest \u015bwietny! Python jest pot\u0119\u017cny! Python jest prosty!&quot;\n\n# re.search() - pierwsze wyst\u0105pienie\nmatch = re.search(r&quot;Python&quot;, text)\nif match:\n    print(f&quot;Znaleziono na pozycji: {match.start()}-{match.end()}&quot;)\n\n# re.findall() - wszystkie wyst\u0105pienia\nmatches = re.findall(r&quot;Python&quot;, text)\nprint(f&quot;Liczba wyst\u0105pie\u0144: {len(matches)}&quot;)  # 3\n\n# re.finditer() - iterator z obiektami Match\nfor match in re.finditer(r&quot;Python&quot;, text):\n    print(f&quot;Pozycja: {match.start()}-{match.end()}, Tekst: {match.group()}&quot;)\n\n# re.sub() - zamiana\nnew_text = re.sub(r&quot;Python&quot;, &quot;JavaScript&quot;, text)\nprint(new_text)  # JavaScript jest \u015bwietny! JavaScript jest pot\u0119\u017cny! JavaScript jest prosty!\n\n# re.split() - podzia\u0142\nparts = re.split(r&quot;!&quot;, text)\nprint(parts)  # &#91;'Python jest \u015bwietny', ' Python jest pot\u0119\u017cny', ' Python jest prosty', ''&#93;\n\n# re.match() - dopasowanie na pocz\u0105tku\nif re.match(r&quot;Python&quot;, text):\n    print(&quot;Tekst zaczyna si\u0119 od 'Python'&quot;)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Python jest \u015bwietny! Python jest pot\u0119\u017cny! Python jest prosty!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.search() - pierwsze wyst\u0105pienie<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">match = re.search(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><span style=\"color: #D4D4D4\">, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> match:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Znaleziono na pozycji: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.start()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">-<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.end()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.findall() - wszystkie wyst\u0105pienia<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><span style=\"color: #D4D4D4\">, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Liczba wyst\u0105pie\u0144: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #DCDCAA\">len<\/span><span style=\"color: #D4D4D4\">(matches)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)  <\/span><span style=\"color: #6A9955\"># 3<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.finditer() - iterator z obiektami Match<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> match <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> re.finditer(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><span style=\"color: #D4D4D4\">, text):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Pozycja: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.start()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">-<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.end()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">, Tekst: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">match.group()<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.sub() - zamiana<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">new_text = re.sub(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;JavaScript&quot;<\/span><span style=\"color: #D4D4D4\">, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(new_text)  <\/span><span style=\"color: #6A9955\"># JavaScript jest \u015bwietny! JavaScript jest pot\u0119\u017cny! JavaScript jest prosty!<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.split() - podzia\u0142<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">parts = re.split(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;!&quot;<\/span><span style=\"color: #D4D4D4\">, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(parts)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Python jest \u015bwietny&#39;, &#39; Python jest pot\u0119\u017cny&#39;, &#39; Python jest prosty&#39;, &#39;&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.match() - dopasowanie na pocz\u0105tku<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> re.match(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;Python&quot;<\/span><span style=\"color: #D4D4D4\">, text):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Tekst zaczyna si\u0119 od &#39;Python&#39;&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Flagi (flags):<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ntext = &quot;Python PYTHON python&quot;\n\n# re.IGNORECASE (re.I) - ignoruj wielko\u015b\u0107 liter\npattern = r&quot;python&quot;\nmatches = re.findall(pattern, text, re.IGNORECASE)\nprint(matches)  # &#91;'Python', 'PYTHON', 'python'&#93;\n\n# re.MULTILINE (re.M) - dopasowanie do pocz\u0105tku linii\ntext = &quot;&quot;&quot;Pierwsza linia\nDruga linia\nTrzecia linia&quot;&quot;&quot;\n\npattern = r&quot;^\\w+&quot;  # S\u0142owo na pocz\u0105tku linii\nmatches = re.findall(pattern, text, re.MULTILINE)\nprint(matches)  # &#91;'Pierwsza', 'Druga', 'Trzecia'&#93;\n\n# re.DOTALL (re.S) - kropka dopasowuje te\u017c nowe linie\ntext = &quot;Linia 1\\nLinia 2\\nLinia 3&quot;\npattern = r&quot;.*&quot;  # Wszystko\nmatches = re.findall(pattern, text, re.DOTALL)\nprint(matches)  # &#91;'Linia 1\\nLinia 2\\nLinia 3', ''&#93;\n\n# Kombinacja flag\npattern = r&quot;python&quot;\nmatches = re.findall(pattern, text, re.IGNORECASE | re.MULTILINE)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Python PYTHON python&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.IGNORECASE (re.I) - ignoruj wielko\u015b\u0107 liter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;python&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text, re.IGNORECASE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Python&#39;, &#39;PYTHON&#39;, &#39;python&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.MULTILINE (re.M) - dopasowanie do pocz\u0105tku linii<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;&quot;&quot;Pierwsza linia<\/span><\/span>\n<span class=\"line\"><span style=\"color: #CE9178\">Druga linia<\/span><\/span>\n<span class=\"line\"><span style=\"color: #CE9178\">Trzecia linia&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;^\\w<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># S\u0142owo na pocz\u0105tku linii<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text, re.MULTILINE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Pierwsza&#39;, &#39;Druga&#39;, &#39;Trzecia&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># re.DOTALL (re.S) - kropka dopasowuje te\u017c nowe linie<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Linia 1<\/span><span style=\"color: #D7BA7D\">\\n<\/span><span style=\"color: #CE9178\">Linia 2<\/span><span style=\"color: #D7BA7D\">\\n<\/span><span style=\"color: #CE9178\">Linia 3&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;.<\/span><span style=\"color: #D7BA7D\">*<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\"># Wszystko<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text, re.DOTALL)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(matches)  <\/span><span style=\"color: #6A9955\"># &#91;&#39;Linia 1\\nLinia 2\\nLinia 3&#39;, &#39;&#39;&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Kombinacja flag<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;python&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">matches = re.findall(pattern, text, re.IGNORECASE | re.MULTILINE)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Praktyczne przyk\u0142ady:<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\n# Walidacja emaila\ndef is_valid_email(email):\n    pattern = r&quot;^&#91;a-zA-Z0-9._%+-&#93;+@&#91;a-zA-Z0-9.-&#93;+\\.&#91;a-zA-Z&#93;{2,}$&quot;\n    return bool(re.match(pattern, email))\n\nemails = &#91;&quot;jan@example.com&quot;, &quot;invalid-email&quot;, &quot;test@domain.co.uk&quot;, &quot;user@.com&quot;&#93;\nfor email in emails:\n    print(f&quot;{email}: {is_valid_email(email)}&quot;)\n\n# Wyodr\u0119bnianie dat\ntext = &quot;Spotkanie 15.03.2024, Deadline: 2024-12-31, Data: 2024\/06\/15&quot;\npattern = r&quot;\\d{2}\\.\\d{2}\\.\\d{4}|\\d{4}-\\d{2}-\\d{2}|\\d{4}\/\\d{2}\/\\d{2}&quot;\ndates = re.findall(pattern, text)\nprint(f&quot;Znalezione daty: {dates}&quot;)\n\n# Wyodr\u0119bnianie numer\u00f3w telefon\u00f3w\ntext = &quot;Tel: 123-456-789, Mobile: +48 987 654 321, Fax: (22) 123-45-67&quot;\npattern = r&quot;(?:\\+\\d{2} )?(?:\\(\\d{2}\\) )?\\d{3}&#91;\\- &#93;?\\d{3}&#91;\\- &#93;?\\d{3}&quot;\nphones = re.findall(pattern, text)\nprint(f&quot;Numery telefon\u00f3w: {phones}&quot;)\n\n# Czyszczenie tekstu\ntext = &quot;   Python   jest   \u015bwietny!   &quot;\n# Usu\u0144 nadmiarowe spacje\ncleaned = re.sub(r&quot;\\s+&quot;, &quot; &quot;, text).strip()\nprint(f&quot;Przed: '{text}'&quot;)\nprint(f&quot;Po: '{cleaned}'&quot;)\n\n# Wyodr\u0119bnianie s\u0142\u00f3w w cudzys\u0142owach\ntext = 'Powiedzia\u0142 &quot;Hello world&quot; i &quot;Python jest super&quot;'\npattern = r'&quot;(&#91;^&quot;&#93;*)&quot;'\nquotes = re.findall(pattern, text)\nprint(f&quot;Teksty w cudzys\u0142owach: {quotes}&quot;)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Walidacja emaila<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">is_valid_email<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">email<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;^<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">a-zA-Z0-9._%+-<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">@<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">a-zA-Z0-9.-<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">+\\.<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D16969\">a-zA-Z<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">{2,}<\/span><span style=\"color: #D16969\">$&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">bool<\/span><span style=\"color: #D4D4D4\">(re.match(pattern, email))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">emails = &#91;<\/span><span style=\"color: #CE9178\">&quot;jan@example.com&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;invalid-email&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;test@domain.co.uk&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;user@.com&quot;<\/span><span style=\"color: #D4D4D4\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> email <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> emails:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">email<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">is_valid_email(email)<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Wyodr\u0119bnianie dat<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Spotkanie 15.03.2024, Deadline: 2024-12-31, Data: 2024\/06\/15&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\d<\/span><span style=\"color: #D7BA7D\">{2}\\.<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{2}\\.<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{4}<\/span><span style=\"color: #D4D4D4\">|<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{4}<\/span><span style=\"color: #D16969\">-\\d<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D16969\">-\\d<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D4D4D4\">|<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{4}<\/span><span style=\"color: #D16969\">\/\\d<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D16969\">\/\\d<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D16969\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">dates = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Znalezione daty: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">dates<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Wyodr\u0119bnianie numer\u00f3w telefon\u00f3w<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;Tel: 123-456-789, Mobile: +48 987 654 321, Fax: (22) 123-45-67&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">(?:<\/span><span style=\"color: #D7BA7D\">\\+<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{2}<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #CE9178\">(?:<\/span><span style=\"color: #D7BA7D\">\\(<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{2}\\)<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{3}<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D7BA7D\">\\-<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{3}<\/span><span style=\"color: #CE9178\">&#91;<\/span><span style=\"color: #D7BA7D\">\\-<\/span><span style=\"color: #D16969\"> <\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">?<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{3}<\/span><span style=\"color: #D16969\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">phones = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Numery telefon\u00f3w: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">phones<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Czyszczenie tekstu<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&quot;   Python   jest   \u015bwietny!   &quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Usu\u0144 nadmiarowe spacje<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">cleaned = re.sub(<\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&quot;\\s<\/span><span style=\"color: #D7BA7D\">+<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot; &quot;<\/span><span style=\"color: #D4D4D4\">, text).strip()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Przed: &#39;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">text<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Po: &#39;<\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">cleaned<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Wyodr\u0119bnianie s\u0142\u00f3w w cudzys\u0142owach<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">text = <\/span><span style=\"color: #CE9178\">&#39;Powiedzia\u0142 &quot;Hello world&quot; i &quot;Python jest super&quot;&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">pattern = <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&#39;&quot;<\/span><span style=\"color: #CE9178\">(&#91;^<\/span><span style=\"color: #D16969\">&quot;<\/span><span style=\"color: #CE9178\">&#93;<\/span><span style=\"color: #D7BA7D\">*<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #D16969\">&quot;&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">quotes = re.findall(pattern, text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Teksty w cudzys\u0142owach: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">quotes<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Dobre praktyki:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>U\u017cywaj surowych string\u00f3w (r&#8221;&#8230;&#8221;) dla wzorc\u00f3w<\/li>\n\n\n\n<li>Eskejpuj znaki specjalne (\\d, \\w, \\s)<\/li>\n\n\n\n<li>U\u017cywaj grup do wyodr\u0119bniania cz\u0119\u015bci dopasowania<\/li>\n\n\n\n<li>Testuj wzorce na r\u00f3\u017cnych danych<\/li>\n\n\n\n<li>U\u017cywaj flag dla lepszej kontroli<\/li>\n\n\n\n<li>Unikaj zbyt skomplikowanych wzorc\u00f3w<\/li>\n\n\n\n<li>Dokumentuj wzorce regex<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u0106wiczenie:<\/h4>\n\n\n\n<p>Stw\u00f3rz funkcj\u0119 waliduj\u0105c\u0105 r\u00f3\u017cne formaty danych (email, telefon, kod pocztowy, PESEL).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Uwaga:<\/h4>\n\n\n\n<p>Wyra\u017cenia regularne mog\u0105 by\u0107 skomplikowane i niekt\u00f3re wzorce mog\u0105 nie dzia\u0142a\u0107 poprawnie w edytorze online. Zalecane jest testowanie regex w lokalnym \u015brodowisku Python.<\/p>\n\n\n\n<p><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wyra\u017cenia regularne w Pythonie Wyra\u017cenia regularne (regex) to pot\u0119\u017cne narz\u0119dzie do wyszukiwania, dopasowywania i manipulacji tekstem. Modu\u0142 re: Python u\u017cywa modu\u0142u re do pracy z wyra\u017ceniami regularnymi. Podstawowe wzorce: Znaki specjalne: Kwantytory (ilo\u015bci): Grupy i referencje: Funkcje modu\u0142u re: Flagi (flags): Praktyczne przyk\u0142ady: Dobre praktyki: \u0106wiczenie: Stw\u00f3rz funkcj\u0119 waliduj\u0105c\u0105 r\u00f3\u017cne formaty danych (email, telefon, kod [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4,3],"tags":[6,5,27],"class_list":["post-64","post","type-post","status-publish","format-standard","hentry","category-kurs","category-python","tag-kurs","tag-python","tag-wyrazenia-regularne"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/64","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=64"}],"version-history":[{"count":1,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/64\/revisions"}],"predecessor-version":[{"id":65,"href":"https:\/\/python-ai.pl\/index.php?rest_route=\/wp\/v2\/posts\/64\/revisions\/65"}],"wp:attachment":[{"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python-ai.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}