Regex Hile Sayfası: En Önemli Desenler ve Örnekler
Düzenli ifadeler (regex), metin işleme, veri doğrulama ve desen eşleştirme için en güçlü araçlardan biridir. Doğru kullanıldığında, bir regex deseni düzinelerce satırlık geleneksel kodu bir satırlık kısa bir ifadeyle değiştirebilir. Bu hile sayfası, hemen kullanabileceğiniz pratik örneklerle birlikte en önemli regex sözdizimini kapsar.
Regex Nedir?
Karakter Sınıfı Kısayolları
| Desen | Açıklama | Örnek Eşleşme |
|---|---|---|
| . | Yeni satır hariç herhangi bir karakter | a, 1, @ |
| \d | Herhangi bir rakam (0-9) | 0, 5, 9 |
| \D | Rakam olmayan karakter | a, B, ! |
| \w | Sözcük karakteri (harf, rakam, alt çizgi) | a, Z, 9, _ |
| \W | Sözcük olmayan karakter | @, #, boşluk |
| \s | Boşluk karakteri (boşluk, sekme, yeni satır) | boşluk, sekme |
| \S | Boşluk olmayan karakter | a, 1, * |
| \b | Sözcük sınırı | merhaba dünya |
| \B | Sözcük sınırı olmayan | merhaba dünya |
| [abc] | a, b veya c'den herhangi biri | a, b, c |
Açgözlü ve İsteksiz Niceleyiciler
| Desen | Açıklama | Örnek Eşleşme |
|---|---|---|
| [^abc] | a, b veya c dışında herhangi bir karakter | d, e, f |
| [a-z] | a'dan z'ye herhangi bir küçük harf | a, m, z |
| [A-Z] | A'dan Z'ye herhangi bir büyük harf | A, M, Z |
| [0-9] | 0'dan 9'a herhangi bir rakam | 0, 5, 9 |
| [a-zA-Z] | Herhangi bir harf (büyük veya küçük) | a, B, z |
| [a-zA-Z0-9] | Herhangi bir alfanümerik karakter | a, B, 7 |
Yakalama Grupları
| Anlam | Desen | Açıklama |
|---|---|---|
| * | 0 veya daha fazla kez | a* → "", "a", "aaa" |
| + | 1 veya daha fazla kez | a+ → "a", "aaa" |
| ? | 0 veya 1 kez (isteğe bağlı) | renk? → "renk", "renk" |
| {n} | Tam olarak n kez | a{3} → "aaa" |
Yakalamayan Gruplar
| Özellik | JavaScript | Python |
|---|---|---|
| {n,} | n veya daha fazla kez | a{2,} → "aa", "aaa" |
| {n,m} | n ile m kez arası | a{2,4} → "aa", "aaa", "aaaa" |
| Açgözlü | Mümkün olduğunca çok eşleşir | .* → tüm dizeyi tüketir |
| İsteksiz (tembel) | Mümkün olduğunca az eşleşir | .*? → her seferinde bir karakter tüketir |
| Sahiplenici | Eşleşir ve asla geri vermez (Java/PCRE) | .++ → aşırı eşleşir, geri izleme yok |
Temel Regex Sözdizimi
Düzenli ifade (regex), metin desenlerini tanımlamak için kullanılan bir karakter dizisidir. E-posta adreslerini doğrulamak, URL'lerden veri çıkarmak, belirli formatlarla eşleşen dizeler bulmak ve metin arama ve değiştirme işlemleri gerçekleştirmek için regex kullanabilirsiniz.
Parantez İçinde Geri Referans
Regex, neredeyse her programlama dilinde yerel olarak desteklenir: JavaScript, Python, Java, PHP, Ruby, Go, Rust, C# ve daha fazlası. Çoğu uygulama, tüm diller arasında tutarlı desenler yazmanıza olanak tanıyan Perl uyumlu düzenli ifadeleri (PCRE) takip eder.
Pratik Regex Örnekleri
Regex güçlü olmasına rağmen, okunması ve bakımı zor olabilir. Karmaşık desenleri yorumlarla belgeleyin, karmaşık regex'i daha basit parçalara ayırın ve desenlerinizi kapsamlı bir şekilde test edin.
Regex nedir?
Karakter sınıfları, belirli bir konumda hangi karakterlerin eşleşebileceğini tanımlar. Köşeli parantez içinde listelenen en basit eşleşen karakterlerden, önceden tanımlanmış kısayollara kadar çeşitlilik gösterir.
Regex'te .* ne anlama gelir?
Niceleyiciler, önceki öğenin kaç kez görünmesi gerektiğini belirtir. Bu, regex'in en güçlü ancak en sık yanlış kullanılan özelliklerinden biridir.
Açgözlü ve isteksiz niceleyiciler arasındaki fark nedir?
Çapalar, dizenin içindeki konumlarla eşleşir, karakterlerle değil. Desen eşleşmesinin tam olarak nerede gerçekleşmesi gerektiğini belirtirler.
Regex'te ileriye bakış nasıl kullanılır?
Gruplandırma, birden çok karakteri tek bir birim olarak ele almanıza ve daha sonra yeniden kullanmak üzere eşleşen metni yakalamanıza olanak tanır.
Karakter Sınıfları
Regex'te özel karakterleri nasıl kaçırırım?
İleri ve geri bakış, içeriği tüketmeden desenin öncesinde ve sonrasında ne olduğuna bağlı olarak eşleşmeleri kontrol eden sıfır genişlikli iddialardır.
- JavaScript: İleri ve geri bakışı desteklemez, \A ve \Z'yi desteklemez, tek Unicode özellik kaçışlarını (\p{...}) desteklemez.
...) ile destekler, \d yalnızca ASCII rakamlarıyla eşleşir (re.UNICODE bayrağı olmadan). ...) ile destekler, \A, \Z ve \z'yi destekler, satır sonu eşleşmesi için varsayılan olarak \R'yi destekler. - PHP (PCRE): Geri bakış uzunluğu sabit olmalıdır, \A, \Z ve \z'yi destekler, \R herhangi bir Unicode satır sonu dizisiyle eşleşir.
Greedy vs Lazy Matching
Tüm regex motorları aynı değildir. JavaScript, Python, Java ve PHP arasındaki farklılıkları anlamak, hata ayıklama saatlerini önleyebilir. İşte temel farklılıklar:
Niceleyiciler
(?:)when you do not need to extract the matched group content- Avoid excessive backtracking by using possessive quantifiers or atomic groups where supported
- Be specific with character classes instead of using the dot metacharacter broadly
- Anchor your patterns with ^ and $ when you need to match the entire string
- Pre-compile regex patterns when using them repeatedly in loops
\b^$when searching within larger text
Çapalar ve Sınırlar
Regex desenlerinizi test etmeye hazır mısınız? Anında eşleşme vurgulama ve açıklama ile gerçek zamanlı regex testi sunan ücretsiz çevrimiçi regex test aracımızı kullanın.
Regex (düzenli ifade), metin desenlerini tanımlamak için kullanılan bir karakter dizisidir. Metin içinde belirli desenleri aramak, doğrulamak ve çıkarmak için bir desen eşleştirme dilidir. Regex, programlama, metin düzenleme ve veri işlemede yaygın olarak kullanılır.
Regex Test Aracını DeneRegex Cheat SheetGruplandırma ve Yakalama
What is the difference between greedy and lazy regex matching?
.*, regex'te en yaygın desenlerden biridir. Nokta (.) yeni satır hariç herhangi bir karakterle eşleşir ve yıldız (*) önceki öğenin sıfır veya daha fazla kez görünebileceği anlamına gelir. Birlikte, .* herhangi bir karakter dizisiyle (boş dize dahil) eşleşir. Varsayılan olarak açgözlüdür, yani mümkün olduğunca çok eşleşmeye çalışır.
Are regular expressions the same across all programming languages?
Açgözlü niceleyiciler (.*, .+, .{n,}) mümkün olduğunca çok karakterle eşleşmeye çalışırken, isteksiz niceleyiciler (.*?, .+?, .{n,}?) mümkün olduğunca az karakterle eşleşir. Bu fark, HTML etiketleri veya tırnaklı dizeler gibi sınırlandırılmış içerikle eşleşirken çok önemlidir.
Can regex parse HTML or XML?
İleriye bakış, ana desenin bir parçası olarak tüketmeden bir desenin ardından ne geldiğini kontrol eden bir iddiadır. Pozitif ileriye bakış (?=...) belirli bir desenin gelmesi gerektiğini, negatif ileriye bakış (?!...) belirli bir desenin gelmemesi gerektiğini belirtir. Örneğin, \d+(?=\.\d{2}) yalnızca iki ondalık basamak takip ediyorsa rakamlarla eşleşir.
What are lookahead and lookbehind in regex?
Regex'te özel karakterleri kaçırmak için ters eğik çizgi kullanın. Ters eğik çizgi ile kaçırılması gereken karakterler şunlardır: . * + ? [ ] ( ) { } ^ $ | \ / . Örneğin, bir noktayla eşleşmek için \. kullanın, çünkü . özel bir karakterdir.
How do I make my regex case-insensitive?
Add the i flag after the closing delimiter to make the entire pattern case-insensitive. In JavaScript, use /pattern/i. In Python, use re.IGNORECASE or re.I as a flag. You can also use (?i) inline to make specific portions case-insensitive.
ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.