არქივი კატეგორია » ენა «

ორშაბათი, 06 აპრილი, 2009 | ავტორი:

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

Regex სწრაფი დაწყება

  1. A ვერტიკალური ბარი |, ზოგჯერ ცნობილია როგორც მილის, არის ან “ან” ოპერატორი რეგულარულ გამონათქვამებში. ეს მიუთითებს, რომ ნიმუში მარცხნივ ან მარჯვნივ მარჯვნივ მისაღებია. კლავიატურაზე, ეს გასაღები, როგორც წესი, არის “კაპიტალი”, ან “შეცვლილი ვერსია”, ზურგჩანთა ღილაკს.
  2. ფრჩხილები მრგვალი ფრჩხილებია () რომ აირჩიეთ რეგულარული გამონათქვამის სექცია. მათი გამოყენება შეიძლება მათემატიკაში ანალოგიურად, როდესაც ოპერაციების რიგი მორგებულია. The “შერჩევა” შეიძლება მოხსენიებული იქნას სხვაგან, თუმცა ამას მოგვიანებით გავეცნობთ.
  3. A წერტილი . განსაკუთრებული პერსონაჟია, რომელიც ემთხვევა ნებისმიერი პერსონაჟი გარდა “ახალი ხაზი” პერსონაჟები.
  4. ზურგჩანთა \ ზოგჯერ უწოდებენ ან escape პერსონაჟი. ბევრი პერსონაჟია, როგორიცაა ფრჩხილები და ვერტიკალური ბარი ზემოთ, რომლებსაც განსაკუთრებული მნიშვნელობა აქვთ. ზურგჩანთას იყენებენ წართმევას (escape) ეს განსაკუთრებული მნიშვნელობა. მაგალითად, მიუთითოთ ფაქტობრივი სრული გაჩერება, თქვენ უნდა გაექცეთ სპეციალური წერტილის ხასიათს: \.
  5. Ვარსკვლავი * არის ოპერატორი, რომელიც მიუთითებს იმაზე, რომ წინა სიმბოლო შეიძლება განმეორდეს ნულობით ან მეტჯერ. ეს ხშირად კომბინირებულია წერტილის წარმოქმნით “wildcard” ნიმუში, რომელიც შეესაბამება ნებისმიერი სიგრძის ზოლს: .*

ვერტიკალური შტრიხისა და გაქცევის ხასიათის გამოყენებით

აქ მოცემულია არაერთი მაგალითის ვებ – მისამართი:

http://dogma.swiftspirit.co.za/
http://swiftspirit.co.za/
http://google.com/

თუ მე მინდა ნიმუში, რომელიც ყველა მათგანი ემთხვევა, ვერტიკალური ბარის გამოყენება შემეძლო (წესი 1 ზემოთ) მათი განცალკევება. მე ასევე უნდა გამოვიყენო გაქცევის ხასიათი (წესი 4 ზემოთ) სრული გაჩერებისთვის:

http://dogma  .swiftspirit  .თანა  .ერთად /|http://swiftspirit  .თანა  .ერთად|http://google  .com /

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

ფრჩხილების გამოყენებით

იგივე შეიძლება მიიღოთ შემდეგით, მოკლე, regex, წესით ფრჩხილების გამოყენება 2 ზემოთ:

http://((|დოგმა.)swiftspirit  .თანა  .ერთად|google  .com)/

ყურადღება მიაქციეთ, რომ მე უბრალოდ ჩვეულებრივი ნივთები მოვათავსე, მაგალითად “http://” და “/”, არჩევნების გარეთ.

რა მოხდება, თუ გინდა ტექსტის შესაბამისი, რაც შეიძლება იყოს?

იქნებ უფრო მეტი გაქვთ, რაც თქვენ მაინც გსურთ? მაგალითად, თუ დავდებ http://swiftspirit.co.za/downloads/ და მე მაინც მინდა, რომ ეს ნიმუში შესაბამისობაში იყოს ამ ვებგვერდზე, ან სხვა მისამართებზე. ან იქნებ ეს ნორმალურია http- სთვის://არაფერი.google.com/არაფერი ასევე ემთხვევა. ჩვენ შეგვიძლია გამოვიყენოთ სპეციალური წერტილის და ვარსკვლავების სიმბოლოები წესებიდან 3 და 5 ზემოდან:

http://((|დოგმა.)swiftspirit  .თანა  .ერთად|(|.*\.)google  .com)/.*

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

(|.*\.)

ზემოთ მოცემულია google.com– ის ნიმუშის წინ. ვერტიკალური ბარი აქ მოცემულია ორ ვარიანტზე: ან ცარიელი (ასე რომ, ჩვენ დავასრულებთ მხოლოდ google.com- ს), ან .*\. (ასე რომ გვაქვს არაფერი შემდეგ სიტყვასიტყვითი წერტილი და მას შემდეგ მოყვება google.com).

პრაქტიკა სრულყოფილებას ხდის

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

ნაწილი 2 რამდენიმე დღეში უნდა მოხდეს. მე ვიმოქმედებ ძალიან არაპირდაპირი გზით “მუშაობა”, იმის დემონსტრირება, თუ როგორ უნდა flush DNS ქეში სხვადასხვა სისტემაში.

Share
Tuesday, January 13th, 2009 | ავტორი:

(20:19:25) A: was playing WoW on Saturday
(20:19:40) B: yea dude
(20:19:44) A: They have chat channels similar to IRC, though its specific to the area you’re in
(20:19:52) B: lol
(20:20:01) B: thats kewl
(20:20:05) A: a guy put inI can like to be wearing… “
(20:20:23) A: so I replieda jean pant
(20:20:28) B: lol
(20:20:50) A: and he repliedof ‘n rokkie
(20:21:00) A: I fell off my chair

Share