მეთოდი: search() და რეგულარული გამოსახულების (regular expression – regex, regexp) მიმოხილვა – JS

სანამ უშუალოდ მეთოდი: search() -ის ახსნა-განმარტებაზე გადავალთ, მოვიშველიოთ wikipedia.org -ის ქართულ ენოვანი ჩანაწერი იმის შესახებ თუ რას ნიშნავს რეგულარული გამოსახულება (regular expression – regex, regexp):

რეგულარული გამოსახულება

რეგულარული გამოსახულება (ინგლ. Regular expression; შემოკლებით regex, regexp) — კომპიუტერულ მეცნიერებაში მოხერხებული საშუალება ერთი ჩანაწერით იპოვოს სასურველი ბლოკი ტექსტში. თუმცა გამოსახულება შეიძლება გარკვეულ სიტუაციებში ძლიერ გართულდეს კიდეც. მრავალი პროგრამირების ენა იყენებს ან უზრუნველყოფს მაინც რეგულარული გამოსახულებას. მაგალითად, that man plays with a gr[ae]y ball ეს გამოსახულება დაემთხვევა ისევე როგორც that man plays with a gray ball ასევე that man plays with a grey ball.

წყარო: http://wikipedia.org/

ასევე, ვინც ფლობთ ინგლისურ ენას, შეგიძლიათ უფრო ვრცლად რეგულარული გამოსახულების შესახებ შეგიძლიათ წაიკითხოთ ამ მისამართზე: http://en.wikipedia.org/wiki/Regular_expression

ეხლა მაგალითის დონეზე რომ განვიხილოთ:

წინათ განხილული მეთოდების: indexOf() და lastIndexOf() ის შესაბამის მაგალითს თუ მოვიყვანთ

var myString = “ძალიან ცხელი ზაფხული. ძალიან ხანგრძლივი ზაფხული.”;
document.write(myString.lastIndexOf(“ზაფხული”));

და ამოცანის პირობას თუ შევცვლით შემდეგნაირად:

თუ ჩვენი მიზანი იქნება, მაგალითის დონეზე მოცემულ ნებისმიერ წინადადებაში არსებული თბილისის რომელიმე ქუჩის ე.წ. საფოტო ინდექსი (ZIP CODE) მოვძებნოთ, გამომდინარე იქედან რომ თბილისში ძალიან ბევრი ქუჩაა და ყველას შესაბამისი ოთხი ციფრისაგან შემდგარი საფოსტო ინდექსი აქვს, მოგვიწევს უამრავი კომბინაციის დაწერა 0 -დან 9999 -მდე, იმიტომ რომ ზოგი საფოსტო ინდექსი ნულით იწყება, ზოგი 1 -ით, ზოგი 6 -ით მთავრდება, ზოგი 9 -ით და ა.შ. რაც რეალობაში წინათ განხილული მეთოდის შესაბამისად წარმოადგენს პრობლემას.

სწორედ ამ პრობლემის მარტივად მოგვარებისთვის არის შექმნილი რეგულარული გამოსახულების შაბლონები, ამ შემთხვევისთვის შაბლონი უნდა გამოვიყენოთ შემდეგნაირად:

მოვძებნოთ ტექსტში, ოთხი ზედმიწევნით დაწერილი ციფრი  0 დან 9 მდე

თუ დავფიქრდებით, ამ პრობლემის ლოგიკური გადაწყვეტაც სწორედ ასეთი იქნებოდა.

ეხლა კი ამოვხსნათ მარტივი ამოცანა, სადაც გამოვიყენებთ არა რეგულარული გამოსახულების შაბლონს არამედ უბრალოდ სიტყვას, მეთოდი search() -ის გამოყენებით:

გვაქვს წინადადება: “აი ჩვენ მოვედით”

ჩვენი ამოცანაა, ამ წინადადებაში ვიპოვოთ სიტყვა “ჩვენ”, მეთოდი search() -ის გამოყენებით:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

შედეგი:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

http://jsfiddle.net/wholehat/s5Y3u/

განვიხილოთ ჩვენს მიერ დაწერილი მაგალითი დეტალურად:

var test = “აი ჩვენ მოვედით”;          |          ეს არის წინადადება;
var regExp = /ჩვენ/;          |          ეს არის რეგულარული გამოსახულება, როცა კომპიუტერი იპოვის /   /, შორის მოთავსებულ ნებისმიერ სიმბოლოს, აღითქვამს როგორც რეგულარულ გამოსახულებას;
var result = test.search(regExp);          |          მეთოდი search() -ის გამოყენებით, იპოვოს ცვლად rexExp -ში მითითებული რეგულარული გამოსახულება
document.write(result);

როგორც, დავინახეთ მაგალითიდან გამომდინარე შედეგად მივიღეთ ციფრი: 3

ჩნდება შეკითხვა რატომ ციფრი 3 ?

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

როგორც ვხედავთ, სიტყვა “ჩვენ” იწყება, წინადადებაში არსებული რიგის მიხედვით, მესამე სიმბოლოდან

შენიშვნა: ნუ დაგავიწყდებათ რომ, კომპიუტერი ცვლადში შენახულ ინფორმაციას ითვლის 0 -დან

როგორ მუშაობს, მეთოდი search()

ჩვენს შემთხვევაში მოგდა შემდეგი რამ

აიღო კომპიუტერმა ცვლად test -ში არსებული წინდადება და დაიწყო მასში, ჩვენს მიერ მითითებული სიტყვის ანუ “ჩვენ” -ის ძიება შემდეგნაირად:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

მაგალითი 2

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

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

შედეგი:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

http://jsfiddle.net/wholehat/AJKy2/

ცხადია თქვენთვის წარმოდგენილი, მაგალითი გასაგებია გარდა ერთი შემთხვევისა:

var regExp = /\d\d\d\d/;

ანუ:

\d\d\d\d

1) \d არის რეგულარული გამოსახულების შაბლონი და ნიშნავს ციფრებს 0 დან დაწყებული 9 -ის ჩათვლით

2) \d\d\d\d გვიწერია ოთხჯერ იმიტომ რომ, როგორც ხედავთ ცვლად myIndex -ში, 4 ციფრისგან შემდგარი ინფორმაცია (საფოსტო ინდექსი) გვაქვს შენახული

3) დავალებიდან გამომდინარე, უნდა მოგვეძებნა, ცვლად myIndex -ში შენახული ინფორმაცია თუ შედგებოდა მხოლოდ ციფრებისაგან

როგორ იმუშავა ჩვენს მიერ დაწერილმა პირობამ:

მეთოდი search() და რეგულარული გამოსახულების (regular expression - regex, regexp) მიმოხილვა - JS

Advertisements

კომენტარის დატოვება

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s