Regex nedir
Düzenli ifade, metin bulmak için bir desendir. kedi, «kedi» harflerini «kedicik» içinde de dahil her yerde bulur. Özel karakterler desenin tam harfler yerine metin türlerini tanımlamasını sağlar.
Yapı taşları
. | satır sonu dışında herhangi bir karakter |
d, w, s | bir rakam; bir harf, rakam ya da alt çizgi; bir boşluk, sekme ya da satır sonu |
[aeiou], [^0-9] | bu karakterlerden herhangi biri; rakam olmayan herhangi bir karakter |
*, +, ? | öncekinden sıfır ya da daha fazla, bir ya da daha fazla, sıfır ya da bir |
{3}, {2,4} | tam 3; 2 ile 4 arası |
^, $ | metnin (ya da m bayrağıyla her satırın) başı ve sonu |
| sözcük sınırı: kedi «kedi»yi bulur ama «kedicik»i bulmaz |
( ), | | bir değiştirmede yeniden kullanabileceğin bir grup; bu ya da şu |
Özel bir karakterin kendisini eşlemek için önüne ters eğik çizgi koy: . bir noktayı eşler. JavaScript’te w ve yalnızca İngiliz harflerini tanır; ç, ğ, ı, ö, ş ve ü gibi harfler için [a-zçğıöşü] gibi bir sınıf ya da u bayrağıyla p{L} kullan.
Örnekler
d{3}-d{4}, 555-0123 gibi yazılmış numaraları bulur.^[ ]+|[ ]+$, g ve m bayraklarıyla her satırın başındaki ve sonundaki boşlukları ve sekmeleri hiçbir şeyle değiştirilmeye hazır olarak bulur.(d{4})-(d{2})-(d{2}),$3.$2.$1ile değiştirilince 2024-09-27’yi 27.09.2024’e çevirir.
Bayraklar ve açgözlü eşleme
g bayrağı ilk eşleşme yerine her eşleşmeyi bulur, i büyük/küçük harfi yok sayar, m de ^ ve $’ın satır başına çalışmasını sağlar. Niceleyiciler açgözlüdür: <.*> bir satırda ilk <’den son >’ye kadar eşler. Olabildiğince erken durmaları için ? ekle: <.*?>.
Desenleri JavaScript sözdizimini kullanan Regex test aracında canlı vurgulamayla dene ve onları Bul ve değiştirde kendi metninde kullan.
Gündelik işler için örüntüler
| Bulmak için | Örüntü |
|---|---|
| Boş satırlar | m bayrağıyla ^s*$ |
| Tekrarlanan boşluklar | {2,}, tek boşlukla değiştirilir |
| Parantez içindeki her şey | ([^)]*) |
| Bir fiyat | $d+(.d{2})? |
| Bir HTML etiketi | <[^>]+> |
| Bir CSV satırının son alanı | m bayrağıyla [^,]+$ |
Gruplarla yeniden düzenlemek
(w+), (w+) bulup $2 $1 ile değiştirmek, bütün bir liste boyunca “Yılmaz, Ayşe”yi “Ayşe Yılmaz” yapar. Her parantez çifti soldan numaralanır ve $0 eşleşmenin tamamıdır.
Yaygın hatalar
- Noktanın her şey anlamına geldiğini unutmak.
file.txt, “fileXtxt” ile de eşleşir.file.txtyaz. - Açgözlü niceleyicilerin fazlasını alması. İki alıntılı dizenin olduğu bir satırda
".*", ilk tırnaktan sonuncuya kadar eşleşir.".*?"kullan. - Her aracın aynı sözdizimini kullandığını varsaymak. Geriye bakış, adlandırılmış gruplar ve karakter sınıfları içindeki
d, JavaScript, Python, grep ve düzenleyicin arasında farklıdır. - İç içe yapıları ayrıştırmaya çalışmak. HTML, JSON ve kodda, bir düzenli ifadenin izleyemeyeceği iç içe geçme vardır. Bir ayrıştırıcı kullan ve düzenli ifadeyi düz metin için sakla.
- Takılıp kalan bir örüntü.
(a+)+bgibi iç içe niceleyiciler, uzun ve eşleşmeyen bir satırda üstel zaman alabilir. Örüntüyü basitleştir.