Yuklenilir...
Yuklenilir...
Müntəzəm ifadələr (regex) mətn axtarışı, uyğunlaşdırma və manipulyasiyası üçün güclü naxışlardır. İlk baxışda qorxuducu görünə bilər -- ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ kimi bir sətir yad dilə bənzəyə bilər. Amma əsaslar təəccübləndirici qədər sadədir və quruluş elementlərini anladıqdan sonra regex naxışları etibarlı və yaradıcı ola bilərsiniz. Bu bələdçi sizi sıfırdan praktik bacarığa çatdırır.
Müntəzəm ifadə axtarış naxışını müəyyən edən simvollar ardıcıllığıdır. Onu xüsusi olaraq mətn tapmaq və manipulyasiya etmək üçün hazırlanmış mini proqramlaşdırma dili kimi düşünün. Regex demək olar ki hər proqramlaşdırma dilində (JavaScript, Python, Java, Go, PHP, Ruby, C#), mətn redaktorlarında (VS Code, Sublime Text, Vim), komanda sətiri alətlərində (grep, sed, awk), verilənlər bazalarında (MySQL, PostgreSQL) və hətta cədvəl tətbiqlərində istifadə olunur.
"hello" kimi literal sətir axtardıqda siz dəqiq uyğunluqlar tapırsınız. Regex isə naxışlar axtarmağa imkan verir -- "h ilə başlayan və o ilə bitən istənilən söz," və ya "telefon nömrəsinə bənzər istənilən rəqəm ardıcıllığı," və ya "bu sənəddəki istənilən e-poçt ünvanı." Müntəzəm ifadələrin əsas gücü budur: onlar xüsusi sətirləri deyil, mətn kateqoriyalarını təsvir edir.
Bunlar regex-in təməl quruluş elementləridir. Hər biri xüsusi simvol növünə uyğun gəlir:
\d istənilən rəqəmə uyğun gəlir (0-9)\D rəqəm olmayan istənilən simvola uyğun gəlir\w istənilən söz simvoluna uyğun gəlir (hərflər, rəqəmlər, alt xətt)\W söz olmayan istənilən simvola uyğun gəlir\s istənilən boşluğa uyğun gəlir (boşluq, tab, yeni sətir)\S boşluq olmayan istənilən simvola uyğun gəlir. yeni sətir xaric istənilən simvola uyğun gəlir^ sətrin başına uyğun gəlir$ sətrin sonuna uyğun gəlirMisal: \d\d\d naxışı ardıcıl üç rəqəmə uyğun gəlir -- "123", "456", "789", amma "12a" və ya "ab3"ə deyil.
Simvol sinifləri uyğun gələn xüsusi simvol dəstələri müəyyən etməyə imkan verir:
[abc] a, b və ya c olan istənilən tək simvola uyğun gəlir[a-z] istənilən kiçik hərfə uyğun gəlir[A-Z] istənilən böyük hərfə uyğun gəlir[0-9] istənilən rəqəmə uyğun gəlir (\d ilə eyni)[a-zA-Z0-9] istənilən hərf və ya rəqəmə uyğun gəlir[^abc] a, b və ya c OLMAYAN istənilən simvola uyğun gəlirKvantifikatorlar naxışın neçə dəfə təkrarlanacağını müəyyən edir:
* 0 və ya daha çox dəfə uyğun gəlir+ 1 və ya daha çox dəfə uyğun gəlir? 0 və ya 1 dəfə uyğun gəlir (bir şeyi istəyə bağlı edir){3} dəqiq 3 dəfə uyğun gəlir{2,5} 2-dən 5-ə qədər dəfə uyğun gəlir{3,} 3 və ya daha çox dəfə uyğun gəlirMisal: \d{3}-\d{4} naxışı üç rəqəmli nömrə, tirə və dörd rəqəmli nömrəyə uyğun gəlir -- məsələn "555-1234".
Mötərizələr qruplar yaradır, boru simvolu isə alternasiya (məntiqi VƏ YA) yaradır:
(abc) "abc" qrupunu tutur -- uyğunluğun xüsusi hissələrini çıxarmaq üçün faydalıdır(a|b|c) a, b və ya c-yə uyğun gəlir (alternasiya)(?:abc) tutulmayan qrupdur -- "abc"-yə uyğun gəlir, amma sonrakı istifadə üçün tutmurBu gün istifadə edə biləcəyiniz real-dünya regex naxışları:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\d{3}[-.]?\d{3}[-.]?\d{4}https?://[\w.-]+(?:\.[\w.-]+)+[\w.,@?^=%&:/~+#-]*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])<([a-z]+)[^>]*>.*?</\1>#(?:[0-9a-fA-F]{3}){1,2}^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$Bayraqlar regex motorunun naxışınızı necə şərh etdiyini dəyişir:
g (qlobal): Yalnız birincini deyil, bütün uyğunluqları tapıri (hərflər fərqli deyil): Uyğunlaşdırarkən hərflərin ölçüsünü nəzərə almırm (çoxsətirli): ^ və $ sətir sərhədi əvəzinə sətir sərhədlərinə uyğun gəlirs (dotAll): . yeni sətir simvollarına da uyğun gəlirRegex yazarkən bu tez-tez edilən səhvlərə diqqət edin:
., *, + kimi simvollar xüsusi mənaya malikdir. Onları literal olaraq uyğunlaşdırmaq üçün tərs xətt ilə qaçışdırın: \. həqiqi nöqtəyə uyğun gəlir.*?, +?) istifadə edin.^ və $ olmadan naxışınız niyyət olunmayan alt sətrlərə uyğun gələ bilər.(a+)+ kimi iç-içə kvantifikatorlar regex motorunun müəyyən girişlərdə donmasına səbəb ola bilər.Müntəzəm ifadələr proqramlaşdırma və məlumat işləri üçün ən ümumi faydalı bacarıqlardan biridir. Onları öyrənmək üçün etdiyiniz investisiya karyeranızın hər həftəsi özünü ödəyəcək. Vaxtım Yoxdu-dakı pulsuz Regex Test Edicisi ilə eksperiment etməyə başlayın.
Yeni blog yazıları və faydalı alətlər haqqında məlumat almaq üçün abunə olun.