{"id":10420,"date":"2026-09-16T18:10:00","date_gmt":"2026-09-16T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10420"},"modified":"2026-10-26T11:50:15","modified_gmt":"2026-10-26T10:50:15","slug":"wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/","title":{"rendered":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia"},"content":{"rendered":"<p>Wyra\u017cenie regularne opisuje wzorzec tekstu. Silnik to program interpretuj\u0105cy ten wzorzec, a flagi zmieniaj\u0105 wybrane regu\u0142y, np. rozr\u00f3\u017cnianie wielkich i ma\u0142ych liter. Poprawno\u015b\u0107 zale\u017cy tak\u017ce od silnika, flag i wywo\u0142anej metody. Znalezienie fragmentu jest innym zadaniem ni\u017c sprawdzenie ca\u0142ego wej\u015bcia.<\/p>\n<p>Jeden poprawny przyk\u0142ad nie potwierdza w\u0142a\u015bciwych granic dopasowania ani akceptowalnego czasu pracy. Poni\u017csze przyk\u0142ady dotycz\u0105 JavaScriptu, chyba \u017ce wskazano inny j\u0119zyk.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10420-regex-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Wyszukiwanie JavaScript w ca\u0142ym przyk\u0142adzie: 1, 2, 2 i 0 dopasowa\u0144. Ciemniejsze wyr\u00f3\u017cnienie oznacza przechwycon\u0105 grup\u0119.\"><figcaption>Wyszukiwanie JavaScript w ca\u0142ym przyk\u0142adzie: 1, 2, 2 i 0 dopasowa\u0144. Ciemniejsze wyr\u00f3\u017cnienie oznacza przechwycon\u0105 grup\u0119.<\/figcaption><\/figure>\n<h2>Zach\u0142anno\u015b\u0107 dotyczy kwantyfikatora<\/h2>\n<p>Kwantyfikator okre\u015bla, ile razy mo\u017ce wyst\u0105pi\u0107 cz\u0119\u015b\u0107 wzorca. Zach\u0142anne powt\u00f3rzenie najpierw pr\u00f3buje obj\u0105\u0107 jak najwi\u0119cej pasuj\u0105cego tekstu, a leniwe zaczyna od jak najmniejszej ilo\u015bci. Oba mog\u0105 zmieni\u0107 ten wyb\u00f3r, aby dopasowa\u0107 reszt\u0119 wzorca.<\/p>\n<p>Kropka <code>.<\/code> dopasowuje znak, a <code>*<\/code> zach\u0142annie powtarza dopasowanie. W JavaScripcie kropka pomija separatory wierszy bez flagi dotAll <code>s<\/code>. Dos\u0142own\u0105 kropk\u0119 oznacza <code>\\.<\/code>. Przy dw\u00f3ch odno\u015bnikach w podw\u00f3jnych cudzys\u0142owach <code>href=\"(.*)\"<\/code> mo\u017ce przechwyci\u0107 tekst od pierwszego otwieraj\u0105cego do ostatniego zamykaj\u0105cego cudzys\u0142owu, razem ze znacznikami pomi\u0119dzy nimi.<\/p>\n<p><code>href=\"(.*?)\"<\/code> najpierw pr\u00f3buje kr\u00f3tszych przechwyce\u0144. <code>href=\"([^\"]*)\"<\/code> jawnie wyklucza podw\u00f3jny cudzys\u0142\u00f3w z warto\u015bci. W pokazanym wej\u015bciu oba wzorce daj\u0105 po dwa dopasowania, je\u015bli metoda wyszukuje wszystkie wyst\u0105pienia. \u017baden nie zast\u0119puje parsera HTML: inne cudzys\u0142owy, encje i struktura dokumentu wymagaj\u0105 odpowiedniego parsera.<\/p>\n<p>Klasa zaprzeczona nie gwarantuje og\u00f3lnie braku nawrot\u00f3w. Na przyk\u0142ad <code>[^,]+a<\/code> mo\u017ce odda\u0107 wcze\u015bniej poch\u0142oni\u0119ty znak, aby dopasowa\u0107 ko\u0144cowe <code>a<\/code>. W przyk\u0142adzie odno\u015bnik\u00f3w zalet\u0105 jest jawna granica na cudzys\u0142owie.<\/p>\n<h2>Flaga wielowierszowa nie ogranicza klasy znak\u00f3w<\/h2>\n<p><code>[^&amp;]<\/code> obejmuje znaki ko\u0144ca wiersza, poniewa\u017c nie s\u0105 ampersandami. Flaga <code>m<\/code> zmienia kotwice, a nie zbi\u00f3r znak\u00f3w poch\u0142anianych przez klas\u0119. Pierwszy wzorzec daje wi\u0119c <strong>jedno<\/strong> dopasowanie przez oba wiersze. Jawne wykluczenie CR i LF daje dwa:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> text = <span class=\"cbb-string\">'utm_source=newsletter\\nutm_medium=email'<\/span>;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> broad = &#91;...text.<span class=\"cbb-function\">matchAll<\/span>(\/^<span class=\"cbb-function\">utm_<\/span>(&#91;a-z_&#93;+)=(&#91;^&amp;&#93;+)$\/gm)&#93;;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">const<\/span> bounded = &#91;...text.<span class=\"cbb-function\">matchAll<\/span>(\/^<span class=\"cbb-function\">utm_<\/span>(&#91;a-z_&#93;+)=(&#91;^&amp;\\r\\n&#93;+)$\/gm)&#93;;\n<\/span><span class=\"cbb-line\">console.<span class=\"cbb-function\">log<\/span>(broad.length);   <span class=\"cbb-comment\">\/\/ 1<\/span>\n<\/span><span class=\"cbb-line\">console.<span class=\"cbb-function\">log<\/span>(bounded.length); <span class=\"cbb-comment\">\/\/ 2<\/span>\n<\/span><span class=\"cbb-line\">console.<span class=\"cbb-function\">log<\/span>(broad&#91;<span class=\"cbb-number\">0<\/span>&#93;&#91;<span class=\"cbb-number\">2<\/span>&#93; === <span class=\"cbb-string\">'newsletter\\nutm_medium=email'<\/span>); <span class=\"cbb-comment\">\/\/ true<\/span>\n<\/span><span class=\"cbb-line\">console.<span class=\"cbb-function\">log<\/span>(\/^&#91;<span class=\"cbb-number\">0<\/span>-9&#93;+$\/.<span class=\"cbb-function\">test<\/span>(<span class=\"cbb-string\">'123\\n'<\/span>)); <span class=\"cbb-comment\">\/\/ false (JavaScript, no m)<\/span>\n<\/span><span class=\"cbb-line\">console.<span class=\"cbb-function\">log<\/span>(\/^&#91;<span class=\"cbb-number\">0<\/span>-9&#93;+$\/m.<span class=\"cbb-function\">test<\/span>(<span class=\"cbb-string\">'bad\\n123\\nbad'<\/span>)); <span class=\"cbb-comment\">\/\/ true: one valid line<\/span><\/span><\/code><\/pre><\/figure>\n<p>Ograniczony przyk\u0142ad opisuje celowo prosty format wierszy z niepust\u0105 warto\u015bci\u0105. Spacje pozostaj\u0105 dozwolone; <code>[^&amp;\\s]+<\/code> wyklucza\u0142oby tak\u017ce spacje i pozosta\u0142e bia\u0142e znaki, czyli ustala\u0142o inn\u0105 regu\u0142\u0119. Obs\u0142uga CRLF i dopuszczalnych pustych warto\u015bci wymaga osobnych test\u00f3w. Rzeczywiste parametry URL lepiej odczytywa\u0107 parserem URL i <code>URLSearchParams<\/code>, z uwzgl\u0119dnieniem dekodowania oraz powtarzaj\u0105cych si\u0119 kluczy.<\/p>\n<h2>Walidacja wymaga sprawdzenia ca\u0142ego wej\u015bcia<\/h2>\n<p>Wyszukanie <code>[0-9]+<\/code> powiedzie si\u0119 wewn\u0105trz <code>abc123def<\/code>. JavaScriptowe <code>\/^[0-9]+$\/<\/code> bez <code>m<\/code> ogranicza ca\u0142\u0105 warto\u015b\u0107 do cyfr ASCII. Dodanie <code>m<\/code> pozwala znale\u017a\u0107 poprawny wiersz w niepoprawnym wej\u015bciu. Alternatywy wymagaj\u0105 te\u017c grupowania: <code>^(?:yes|no)$<\/code> stosuje obie kotwice do obu wariant\u00f3w.<\/p>\n<p>Kotwice sprawdzaj\u0105 pozycj\u0119, np. pocz\u0105tek lub koniec wej\u015bcia, bez poch\u0142aniania znaku. Regu\u0142y kotwic zale\u017c\u0105 od j\u0119zyka. Pythonowe <code>$<\/code> dopasowuje tak\u017ce pozycj\u0119 przed ko\u0144cowym znakiem nowego wiersza; <code>re.fullmatch(r\"[0-9]+\", value)<\/code> jawnie sprawdza ca\u0142y tekst. PCRE2\/PHP pozwala u\u017cy\u0107 <code>\\A[0-9]+\\z<\/code>. W Ruby <code>^<\/code> i <code>$<\/code> zawsze s\u0105 kotwicami wierszy; granice ca\u0142ego wej\u015bcia oznaczaj\u0105 <code>\\A<\/code> i <code>\\z<\/code>. Ruby u\u017cywa flagi <code>m<\/code> do dotAll, inaczej ni\u017c JavaScript.<\/p>\n<h2>Niejednoznaczne powt\u00f3rzenia mog\u0105 wymaga\u0107 nadmiernej pracy<\/h2>\n<p>Nawr\u00f3t oznacza powr\u00f3t do wcze\u015bniejszej decyzji i pr\u00f3b\u0119 innego wyboru, gdy reszta wzorca nie pasuje. W ten spos\u00f3b silnik mo\u017ce sprawdza\u0107 wiele podzia\u0142\u00f3w tego samego tekstu. <code>^(a+)+$<\/code> wobec ci\u0105gu liter <code>a<\/code> zako\u0144czonego <code>!<\/code> to typowa ryzykowna konstrukcja. Usuni\u0119cie zb\u0119dnego zewn\u0119trznego powt\u00f3rzenia daje <code>^a+$<\/code> z tym samym zbiorem poprawnych wej\u015b\u0107. Czas zale\u017cy od silnika, optymalizacji, danych i limit\u00f3w; nie istnieje uniwersalny pr\u00f3g trzydziestu znak\u00f3w.<\/p>\n<p>Samo zagnie\u017cd\u017cenie nie dowodzi wyk\u0142adniczego czasu i nie jest jedyn\u0105 przyczyn\u0105 powolnego wyszukiwania. Wyszukiwanie niezakotwiczonego <code>a+$<\/code> mo\u017ce pr\u00f3bowa\u0107 wielu pozycji pocz\u0105tkowych w d\u0142ugim niepasuj\u0105cym tek\u015bcie. Usuni\u0119cie zagnie\u017cd\u017cenia nie uzasadnia zatem og\u00f3lnej obietnicy liniowo\u015bci. Znaczenie maj\u0105 te\u017c nak\u0142adaj\u0105ce si\u0119 alternatywy i kosztowna nieudana ga\u0142\u0105\u017a przed udan\u0105.<\/p>\n<p>Wzorce takie jak <code>(.*,)*$<\/code> dopuszczaj\u0105 zero powt\u00f3rze\u0144 i podczas wyszukiwania mog\u0105 zwr\u00f3ci\u0107 puste dopasowanie na ko\u0144cu. Podzia\u0142 na zawsze szybkie dopasowania i wy\u0142\u0105cznie powolne ca\u0142kowite niepowodzenia pomija ten przypadek. Leniwy kwantyfikator zmienia kolejno\u015b\u0107 pr\u00f3b, ale nie usuwa og\u00f3lnie niejednoznacznych podzia\u0142\u00f3w.<\/p>\n<h2>Testy i limity s\u0105 cz\u0119\u015bci\u0105 projektu<\/h2>\n<p>Przydatne przypadki obejmuj\u0105 poprawne dane, dwa wyst\u0105pienia, b\u0142\u0119dne prefiksy i sufiksy, puste wej\u015bcie, CR\/LF, cyfry Unicode, brakuj\u0105ce delimitery i d\u0142ugie teksty prawie zgodne ze wzorcem. Oczekiwany wynik powinien obejmowa\u0107 warto\u015bci grup oraz pozycje dopasowa\u0144, nie tylko warto\u015b\u0107 logiczn\u0105. Trzy przyk\u0142ady s\u0105 pocz\u0105tkiem, a nie dowodem kompletno\u015bci.<\/p>\n<p>Potencjalnie kosztowne wzorce wymagaj\u0105 izolowanych test\u00f3w z pocz\u0105tkowo kr\u00f3tkimi danymi i \u015bcis\u0142ym zewn\u0119trznym limitem czasu lub obs\u0142ugiwanym timeoutem silnika. Przydatne pozostaj\u0105 limity d\u0142ugo\u015bci wej\u015bcia i wielko\u015bci wzorca. Przekroczenie czasu jest b\u0142\u0119dem do obs\u0142u\u017cenia, a nie dowodem niepoprawno\u015bci tekstu.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy grupy atomowe lub kwantyfikatory zaborcze rozwi\u0105zuj\u0105 ka\u017cdy problem?<\/h3><p>Nie. Obs\u0142uga zale\u017cy od silnika; Python doda\u0142 obie funkcje w 3.11. Zablokowanie nawrot\u00f3w mo\u017ce zmieni\u0107 akceptowane wej\u015bcia: zach\u0142anny zaborczy fragment mo\u017ce poch\u0142on\u0105\u0107 znaki potrzebne nast\u0119pnemu elementowi. R\u00f3wnowa\u017cno\u015b\u0107 wymaga test\u00f3w.<\/p>\n<h3>Co gwarantuje silnik liniowy?<\/h3><p>RE2 i Go regexp dokumentuj\u0105 liniowe dopasowywanie wzgl\u0119dem d\u0142ugo\u015bci wej\u015bcia przy sta\u0142ym wzorcu. Rust regex podaje O(m \u00d7 n) dla pojedynczego wyszukiwania, gdzie m oznacza wielko\u015b\u0107 wzorca, a n d\u0142ugo\u015b\u0107 wej\u015bcia; iteratory po wielu dopasowaniach mog\u0105 mie\u0107 koszt kwadratowy wzgl\u0119dem n. Znaczenie nadal maj\u0105 nieobs\u0142ugiwane funkcje, kompilacja, limity rozmiaru i wybrana metoda. Biblioteki te nie obs\u0142uguj\u0105 dowolnych odwo\u0142a\u0144 wstecznych ani lookaround.<\/p>\n<h3>Czy \\d zawsze oznacza cyfry ASCII?<\/h3><p>W JavaScripcie <code>\\d<\/code> dopasowuje 0\u20139. Wzorce tekstowe Pythona i domy\u015blne zachowanie .NET obejmuj\u0105 tak\u017ce cyfry dziesi\u0119tne Unicode; flaga ASCII w Pythonie i opcja ECMAScript w .NET zmieniaj\u0105 odpowiednie regu\u0142y. <code>[0-9]<\/code> jednoznacznie okre\u015bla wymaganie cyfr ASCII.<\/p><\/div><div class=\"lw-quellen\"><h2>\u0179r\u00f3d\u0142a<\/h2><ul><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_expressions\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: wyra\u017cenia regularne<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Regular_expressions\/Quantifier\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: kwantyfikatory<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Regular_expressions\/Input_boundary_assertion\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: sprawdzanie granic wej\u015bcia<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Regular_expressions\/Character_class_escape\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: skr\u00f3ty klas znak\u00f3w<\/a><\/li><li><a href=\"https:\/\/docs.python.org\/3\/library\/re.html\" target=\"_blank\" rel=\"noopener noreferrer\">Python: re<\/a><\/li><li><a href=\"https:\/\/www.pcre.org\/current\/doc\/html\/pcre2pattern.html\" target=\"_blank\" rel=\"noopener noreferrer\">PCRE2: sk\u0142adnia wzorc\u00f3w<\/a><\/li><li><a href=\"https:\/\/docs.ruby-lang.org\/en\/master\/Regexp.html\" target=\"_blank\" rel=\"noopener noreferrer\">Ruby: Regexp<\/a><\/li><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/standard\/base-types\/character-classes-in-regular-expressions\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft: klasy znak\u00f3w .NET<\/a><\/li><li><a href=\"https:\/\/github.com\/google\/re2\" target=\"_blank\" rel=\"noopener noreferrer\">Google: RE2<\/a><\/li><li><a href=\"https:\/\/pkg.go.dev\/regexp\" target=\"_blank\" rel=\"noopener noreferrer\">Go: regexp<\/a><\/li><li><a href=\"https:\/\/docs.rs\/regex\/latest\/regex\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rust regex: z\u0142o\u017cono\u015b\u0107 i niezaufane dane wej\u015bciowe<\/a><\/li><li><a href=\"https:\/\/v8.dev\/blog\/non-backtracking-regexp\" target=\"_blank\" rel=\"noopener noreferrer\">V8: nawroty i alternatywny silnik<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/URLSearchParams\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: URLSearchParams<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Zach\u0142anne kwantyfikatory, brak granic i niejednoznaczne powt\u00f3rzenia mog\u0105 powodowa\u0107 b\u0142\u0119dne dopasowania lub nadmierny koszt. Konkretne przyk\u0142ady JavaScript pokazuj\u0105 wp\u0142yw flag, klas znak\u00f3w i walidacji ca\u0142ego wej\u015bcia.<\/p>\n","protected":false},"author":1,"featured_media":28309,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[152],"tags":[92097,92229],"class_list":["post-10420","post","type-post","status-publish","format-standard","hentry","category-tworzenie-stron-internetowych","tag-data-quality-pl","tag-devops-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-16T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T10:50:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10420-co-wzorzec-naprawde-dopasowuje-n.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia\",\"datePublished\":\"2026-09-16T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:50:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/\"},\"wordCount\":1034,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-10420.png\",\"keywords\":[\"Data Quality\",\"DevOps\"],\"articleSection\":[\"Tworzenie stron internetowych\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/\",\"name\":\"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-10420.png\",\"datePublished\":\"2026-09-16T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:50:15+00:00\",\"description\":\"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-10420.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-10420.png\",\"width\":1200,\"height\":630,\"caption\":\"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik","description":"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/","og_locale":"en_US","og_type":"article","og_title":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik","og_description":"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-16T16:10:00+00:00","article_modified_time":"2026-10-26T10:50:15+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10420-co-wzorzec-naprawde-dopasowuje-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia","datePublished":"2026-09-16T16:10:00+00:00","dateModified":"2026-10-26T10:50:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/"},"wordCount":1034,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-10420.png","keywords":["Data Quality","DevOps"],"articleSection":["Tworzenie stron internetowych"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/","name":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-10420.png","datePublished":"2026-09-16T16:10:00+00:00","dateModified":"2026-10-26T10:50:15+00:00","description":"Dlaczego kropka biegnie za daleko, dlaczego klasa znak\u00f3w przekracza z\u0142amania wiersza i jak zagnie\u017cd\u017cone powt\u00f3rzenie zamienia wzorzec w program bez ko\u0144ca.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-10420.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-10420.png","width":1200,"height":630,"caption":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/wyrazenia-regularne-zachlanna-kropka-brak-kotwic-i-zagniezdzone-powtorzenia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Wyra\u017cenia regularne: zach\u0142anna kropka, brak kotwic i zagnie\u017cd\u017cone powt\u00f3rzenia"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10420"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10420\/revisions"}],"predecessor-version":[{"id":26687,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10420\/revisions\/26687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/28309"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}