Regex Notlarım
Düzensiz şekilde Düzenli İfadelerin notlarını alıyor olacağım. Belki arama motoru sonuçlarında işinize yarayanı bulabilirsiniz diye.
grep İle Renkli & Dizin İçinde RegEx
--color
ile aranan kelimenin yerini renklendirir
glob deseniyle içinde aranacak dosyaları seçeriz.
Colou?r (u karakteri 0 veya 1 kez geçebilir)
- “
Colo
” kısmı kesin eşleşmek zorunda - “
u
” karakteri sıfır veya bir kez geçebilir - “
r
” karakteri kesinlikle “o
” veya “u
” karakterini takip etmeli
Capturing (Yakalanan) ve Non Capturing (Yakalanamayan) Gruplar
Parantez içindeki ifadeyi $1, $2 …
gibi gruplanmış olarak yakalayabilir ve kullanabilirsiniz. Bul ve değiştir yaparken $grup_sırası
ile kullandığımız gibi. Yakalanan gruplar işte bu eşleşmeden sonra kullanabildikleriniz. Yakalanamayan gruplar (non-captuıring) ise sonrasında $grup_sırası şeklinde kullanamadıklarınız.
Look Ahead
?:
İfade eşleştirilir ama yakalanmaz.?=
Soneki eşleştir ancak onu yakalama dışında bırak.a(?=b)
ab
metni içindea
ile eşleşir?!
Match if suffix is absent.a(?!b)
will match thea
inac
, but not thea
inab
.
?:
ve ?=
arasındaki fark şudur ?=
İfadeyi tüm eşleşmeden hariç tutarken ?:
bir yakalama grubu oluşturmaz.
()
capturing group - (yakalama grubu) parantez içindeki normal ifade eşleşmeli ve eşleşme bir yakalama grubu oluşturmalıdır.(?:)
non capturing group - (yakalamayan grup) parantez içindeki normal ifade eşleşmeli, ancak yakalama grubunu oluşturmaz(?=)
positive look ahead - (pozitif ileriye bakış ) parantez içindeki ifade eşleşmeli
(?<=)
positive look behind- (pozitif geriye bakış ) parantez içindeki ifade eşleşmeli ancak yakalama dışında bırakılmalı
(?<!)
Eşleşmeyenleri seçen
(?!)
negative look ahead - (negatif ileriye bak ) ifadeyle eşleşmeyen
at
ile devam ediyor. Devam etmeyenleri seçiyorRef: stackoverflow.com
Örnekler
Başında bu olsun ama seçilmesin
Grupladığımız için $1 ile parantez içindekini alabiliyoruz ancak description.*
kısmı sizlere ömür
$0 ile CLI araçlarında olduğu gibi tüm eşleşmeyi alıyoruz:
Hedefimize dönersek:
(?<
) öncesinde Access-Control-Allow-Origin:\n\s+
(?<!
) olmayan description:.*
(?<
) öncesinde Access-Control-Allow-Origin:\n\s+
(?<=
) olandescription:.*
headers:
Access-Control-Allow-Origin:
description: CORS headers
schema:
description:…..
seçilsin ve değiştirilsin istiyorum. Ancak birçok yerde description geçiyor ve ben sadece Access-Control-Allow-Origin:
satırından sonraki description
bilgisini değiştirmek istiyorum.
(?<=Access-Control-Allow-Origin:\n\s+)description:.*