Regex Çetel
Hızlı referans: çapalar, karakter sınıfları, niceleyiciler, gruplar, lookaround'lar, bayraklar. Kopyalamak için herhangi bir desene tıkla.
Bu ne işe yarar?
Yarı hatırladığın regex sözdiziminin parçalarının yazdırılabilir, aranabilir bir özeti. Buradaki tablolar ana kategorileri kapsar — çapalar, karakter sınıfları, niceleyiciler, gruplar, lookaround'lar, bayraklar — artı yaygın desenlerin başlangıç seti. Bir deseni kopyalamak için tıkla; daraltmak için filtreye yaz. Desenleri metne karşı gerçekten denemek için bunu Regex Tester ile eşle.
Ne zaman kullanılır
(?<=foo)'ya ihtiyacın var ve?'nin<'den önce mi sonra mı geldiğini hatırlayamıyorsun.- Birine regex anlatıyorsun ve Stack Overflow sekmeleri karıştırmak yerine kararlı bir referans sayfası gerekiyor.
- Sıfırdan yazmak yerine kopyalayıp ince ayarlayabileceğin bir başlangıç deseni (UUID, e-posta, ISO tarih) istiyorsun.
- Hangi bayrağın ne yaptığını bilmek istiyorsun — özellikle
s(dotall) vem(multi-line) ki insanlar rutin olarak karıştırır.
Sık yapılan hatalar
- Lehçe önemlidir. Bunun çoğu JavaScript / modern PCRE'dir, ama özellikler değişir. Lookbehind JavaScript'e sadece ES2018 ile geldi;
x(extended) PCRE/Python'dur ve JS'de yoktur; possessive niceleyiciler++sadece PCRE'dir. m≠ "çok satırlı eşleştirme".m^ve$'ın anlamını değiştirir (string başına yerine satır başına)..ile satır sonları arasında eşleştirmek içins(dotall) istiyorsun.- Greedy eşleşmeler çok fazla yer.
<a>b</a>'a karşı<.*>tüm şeyi eşleştirir, sadece<a>'yı değil. Lazy sürüm için<.*?>kullan, veya daha iyisi<[^>]+>gibi daha spesifik bir sınıf. - Regex bir HTML veya JSON parser değildir. Buradaki "yaygın desenler" tek seferlik kazıma veya doğrulama ipuçları için iyidir, yapılandırılmış girdiyi bir string olarak ele almak için değil.
- E-posta regex'leri her zaman yanlıştır. Buradaki örnek kaba bir şekil kontrolüdür; production doğrulama için bunun yerine bir onay e-postası gönder.
- Kopya-yapıştırılmış "mükemmel" regex'lere güvenme. Deploy etmeden önce gerçek verinle Regex Tester ile test et.