← ყველა ხელსაწყო

Regex ტესტერი

ააგეთ, შეამოწმეთ და გამართეთ რეგულარული გამოსახულებები საკუთარ ტექსტზე ბრაუზერში. გაიგეთ სიმბოლოთა კლასები, კვანტიფიკატორები, სამაგრები, ჯგუფები და ალმები.

Regex Tester: ააგეთ და გამართეთ შაბლონები საკუთარ ტექსტზე

რეგულარული გამოსახულება პატარა ენაა, რომელიც ტექსტის ფორმას აღწერს. იმის ნაცვლად, რომ ჰკითხოთ „ეს ზუსტი სიტყვა აქ არის?", regex გაძლევთ საშუალებას იკითხოთ „არსებობს სტრიქონი, რომელიც ასე გამოიყურება?" სწორედ ეს ხდის მას ძლიერს ტექსტის მოძებნის, გადამოწმების, ამოღებისა და ჩანაცვლებისთვის კოდის რედაქტორებში, ლოგის ფაილებში, ფორმის ველებსა და სკრიპტებში. ეს არის ისიც, რაც მას ადვილად შესამცდარს ხდის, რადგან შაბლონმა, რომელიც თქვენს გონებაში კარგად ჟღერს, შეიძლება ჩუმად აღმოაჩინოს ზედმეტი, ნაკლები, ან საერთოდ არაფერი.

სწორედ ამიტომ ჯობს ინტერაქტიული ტესტირება გამოცნობას. როცა შაბლონს აკრიფავთ და უყურებთ, როგორ ინათებს დამთხვევები რეალურ ტექსტში, მყისვე იღებთ უკუკავშირს: ხედავთ, რა დაიჭირა, რა გაცდა და რომელმა ჩამჭერმა ჯგუფმა რომელი ნაწილი გამოიტანა. ჩვენი Regex Tester მთლიანად თქვენს ბრაუზერში მუშაობს. თქვენი შაბლონი და ნიმუშის ტექსტი გვერდს არასდროს ტოვებს, ასე რომ, შეგიძლიათ ჩასვათ ლოგის ჩანაწერები, ელფოსტები ან წარმოების მონაცემები, სერვერზე რაიმეს გაგზავნის გარეშე.

მოციმციმე ცისფერი ფილტრი, რომელიც ოქროსფერ ტოკენებს იჭერს მონაცემთა ნაკადიდან მუქი ინდიგოს ფონზე
Regex ფილტრივით მუშაობს, მხოლოდ იმ ტოკენებს არჩევს, რომლებიც თქვენს შაბლონს ემთხვევა.

ბაზისური ელემენტები, რომელთა ცოდნაც ღირს

ყოველდღიური შაბლონების უმეტესობა მცირე ელემენტთა ნაკრებისგან იწყობა. ისწავლეთ ისინი და შეძლებთ ველური ბუნებაში შემხვედრი regex-ების უმეტესობის ამოკითხვას.

სიმბოლოთა კლასები დაშვებულ სიმბოლოთა ნაკრებს აღწერს. [aeiou] ერთ ხმოვან ასოს ემთხვევა, [0-9] — ერთ ციფრს, ხოლო [a-zA-Z] — ერთ ასოს. კუთხოვან ფრჩხილებში ჩასმული ჩხირი ნაკრებს ანეგატირებს, ასე რომ, [^0-9] ნიშნავს „ნებისმიერი სიმბოლო, რომელიც ციფრი არ არის". შემოკლებები აკრეფას ზოგავს: \d ციფრია, \w — ტექსტური სიმბოლო (ასოები, ციფრები, ქვედა ხაზი), \s — ცარიელი სივრცე, ხოლო წერტილი . თითქმის ნებისმიერ ერთ სიმბოლოს ემთხვევა.

კვანტორები გვეუბნება, რამდენჯერ შეიძლება წინა ელემენტის განმეორება. * ნიშნავს ნულს ან მეტს, + — ერთს ან მეტს, ხოლო ? — ნულს ან ერთს (არასავალდებულო). ზუსტი რაოდენობებისთვის {3} ნიშნავს ზუსტად სამს, ხოლო {2,4} — ორიდან ოთხამდე. ასე რომ, \d{4} ოთხციფრიან წელს ემთხვევა, ხოლო colou?r — ორივე ვარიანტს, ბრიტანულსაც და ამერიკულსაც.

ღუზები შაბლონს პოზიციაზე ამაგრებს და არა სიმბოლოზე. ^ ტექსტის დასაწყისს ემთხვევა, $ — ბოლოს, ხოლო \b — სიტყვის საზღვარს. შაბლონი ^Error მხოლოდ იმ ხაზებს ემთხვევა, რომლებიც „Error"-ით იწყება, რაც ზუსტად ის არის, რაც ლოგების სკანირებისას გჭირდებათ.

ჯგუფები შაბლონის ნაწილს ფრჩხილებში ახვევს, ორივე მიზნით — რომ კვანტორი ერთდროულად რამდენიმე სიმბოლოზე გამოიყენოთ და რომ დამთხვეული ტექსტი მოგვიანებით გამოსაყენებლად ჩაიჭიროთ. (\d{4})-(\d{2})-(\d{2})-ში ყოველი ჯგუფი თარიღის ერთ კომპონენტს იჭერს, რომლის მოგვიანებით ამოღებაც შეგიძლიათ. ალტერნაცია ხაზის სიმბოლოთი „ან"-ივით მოქმედებს: cat|dog|fish სამივე სიტყვიდან ნებისმიერს ემთხვევა.

შაბლონები, რომლებსაც რეალურად გამოიყენებთ

რამდენიმე განმეორებადი ამოცანა რეალური სამუშაოს უმეტესობას ფარავს. რაღაც ელფოსტის მსგავსის დასაჭერად, [\w.+-]+@[\w-]+\.[\w.-]+ პრაგმატული ამოსავალი წერტილია; ელფოსტის სრული ფორმალური ვალიდაცია სპეციფიკაციის მიხედვით ცნობილად რთულია, ხოლო თავისუფალი შაბლონი ჩვეულებრივ სწორი არჩევანია კანდიდატების გამოსაკვეთად და არა მომხმარებელთა უარსაყოფად.

რიცხვებისთვის \d+ ციფრთა თანმიმდევრობებს იჭერს, ხოლო -?\d+(\.\d+)? ემთხვევა უარყოფითი ნიშნისა და ათწილადის ჩათვლით. დასაწყისსა და ბოლოში ცარიელი სივრცის მოსაჭრელად, დაამთხვიეთ ^\s+|\s+$ და ცარიელი სტრიქონით შეცვალეთ. გამეორებული სიტყვების საპოვნელად, უკურეფერენციის შაბლონი \b(\w+)\s+\1\b ემთხვევა სიტყვას, რომელსაც თავად სდევს, სადაც \1 პირველ ჩაჭერილ ჯგუფზე მიუთითებს.

შერჩეული სიტყვები ოქროსფრად ინათებიან და გამოკვეთილია ცისფერი ტექსტისმაგვარი ნაწილაკების მდინარეში მუქ ინდიგო-ლურჯზე
ცოცხალი გამოკვეთვა ზუსტად აჩვენებს, ტექსტის რომელ მონაკვეთებს ემთხვევა შაბლონი.

ალმებით (flags) ცვლის დამთხვევის ქცევას

ალმები გადამრთველებია, რომლებიც მთელ შაბლონს ცვლის. გლობალური ალამი (g) პირველ დამთხვევაზე შეჩერების ნაცვლად ყველა დამთხვევას პოულობს, რაც გჭირდებათ ყველა შემთხვევის გამოკვეთვისას. დიდი/პატარა ასოების უგულებელყოფის ალამი (i) აქცევს error-ს ისეთად, რომ „Error"-საც და „ERROR"-საც ემთხვევა. მრავალხაზოვანი ალამი (m) ცვლის ^-სა და $-ს ისე, რომ ისინი ყოველი ხაზის დასაწყისსა და ბოლოზე ემთხვევა, და არა მთელი ტექსტის, რაც აუცილებელია ხაზ-ხაზ ლოგებთან სამუშაოდ. სხვა სასარგებლო ალმებია s (dotall, რომელიც წერტილს ახალ ხაზზეც ამთხვევს) და u სრული Unicode მხარდაჭერისთვის.

დიალექტები ენის მიხედვით ოდნავ განსხვავდება

Regex დიალექტთა ოჯახია და არა ერთი, ფიქსირებული სტანდარტი. JavaScript, Python, PCRE (PHP), Java, .NET, Go და Rust ერთსა და იმავე საბაზისო სინტაქსზეა შეთანხმებული, მაგრამ განსხვავდება ზღვრებთან: lookbehind-ის მხარდაჭერა, დასახელებული ჯგუფის სინტაქსი ((?<name>...) vs (?P<name>...)), Unicode თვისებების escape-ები, და საერთოდ რომელი ალმები არსებობს — ეს ყველაფერი განსხვავებულია. შაბლონმა, რომელიც ერთ ძრავში მუშაობს, შეიძლება მცირე ცვლილება მოითხოვოს მეორეში, ამიტომ ღირს ტესტირება იმ დიალექტთან, რომელსაც რეალურად იყენებთ. როცა შაბლონი მზადაა, ჩვენი დანარჩენი დეველოპერული ხელსაწყოები და ტექსტის ხელსაწყოები დაგეხმარებათ თანმხლებ სამუშაოში — დამთხვეული მონაცემის გასუფთავებასა, კოდირებასა და გარდაქმნაში.

ხშირად დასმული კითხვები

იგზავნება ჩემი ტექსტი სერვერზე?

არა. Regex Tester მთლიანად თქვენს ბრაუზერში მუშაობს. თქვენი შაბლონი და ნიმუშის ტექსტი თქვენსავე მოწყობილობაზე რჩება და არასდროს იტვირთება, ასე რომ, მგრძნობიარე მონაცემის ჩასმა უსაფრთხოა.

რომელ regex დიალექტს იყენებს ეს ხელსაწყო?

ის JavaScript-ის ჩაშენებულ regex ძრავს იყენებს, თქვენს ბრაუზერში. საბაზისო სინტაქსი ემთხვევა იმას, რასაც ენების უმეტესობით იცნობთ, თუმცა ზოგიერთი გაფართოებული შესაძლებლობა ოდნავ განსხვავდება PCRE-სგან, Python-სგან ან .NET-სგან.

რა განსხვავებაა ხარბ (greedy) და ზარმაც (lazy) დამთხვევას შორის?

ნაგულისხმევად კვანტორები ხარბია და რაც შეიძლება მეტ ტექსტს იჭერს. კითხვის ნიშნის დამატება მათ ზარმაცად აქცევს, რომ რაც შეიძლება ნაკლები დაიჭირონ. მაგალითად, შაბლონი „წერტილი ვარსკვლავი" ხარბია, ხოლო „წერტილი ვარსკვლავი კითხვის ნიშანი" — ზარმაცი.

როგორ დავამთხვიო პირდაპირი სპეციალური სიმბოლო?

დაცალკევეთ იგი ხაზგასმული დახრილით (backslash). ნამდვილი წერტილის დასამთხვევად ჩაწერეთ backslash და წერტილი. იგივე ეხება სხვა მეტასიმბოლოებსაც, როგორიცაა ფრჩხილები, კუთხოვანი ფრჩხილები, პლუსის ნიშანი და კითხვის ნიშანი.

რატომ არაფერს ემთხვევა ჩემი შაბლონი?

ხშირი მიზეზებია გლობალური ალმის არქონა, ღუზები, რომლებიც დამთხვევას არასწორ პოზიციაზე ამაგრებს, დაუცალკევებელი სპეციალური სიმბოლო, ან ხარბი კვანტორები, რომლებიც მოსალოდნელ საზღვარს გადადიან. ტესტირება ეტაპობრივად ჩაატარეთ, რომ პრობლემა იპოვოთ.

შემიძლია დამთხვევის ნაწილების ჩაჭერა?

დიახ. შაბლონის ნაწილი ფრჩხილებში ჩასვით, რომ ჩამჭერი ჯგუფი შექმნათ. ყოველი ჯგუფი ცალკე ბრუნდება, რაც საშუალებას გაძლევთ ისეთი ველები ამოიღოთ, როგორიცაა წელი, თვე და დღე თარიღიდან.