Regular Expressions
ერთ-ერთი პატარა პრობლემა, რომელზეც რამდენიმე კვირის წინ დავკარგე დრო, რეგულარულ გამოსახულებებს ეხებოდა. კერძოდ კი, როგორც ჯავაში ვიყენებდი მათ, ისე მინდოდა დამეწერა php-ზე ფილტრისთვის.
არ იმუშავა. მაგალითისთვის მარტივი გამოსახულება ავიღოთ.
ვთქვათ, მინდა რომ სტრიქონი შეიცავდეს მხოლოდ ლათინურ ასოებს.
ჯავაში იქნებოდა ასე:
String regex="[a-zA-Z]+”;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(”StringToMatch”);
System.out.println(matcher.matches());
იგივე გადავიტანე მეორე ენაზე.
$regex="/[a-zA-Z]/”;
echo preg_match($regex,’StringToMatch’);
მაგრამ ეს პატერნი ერგებოდა როგორც მაგალითად StringToMatch სტრიქონს, ისე asdf1234. asdf45fg67-საც.. და საერთოდ neb1$mier_texts.
საქმე იმაშია, რომ preg_match ფუნქცია აბრუნებს 1-ს იმ შემთხვევაშიც, თუ ერთხელ მაინც შეხვდა სადმე პატერნის შესაბამისი ტექსტი. თუ გვინდა რომ მთელს სტრიქონზე იმუშაოს, მაშინ უნდა ჩავამატოთ დასაწყისის (^) და დასასრულის ($) აღმნიშვნელი სიმბოლოები. ანუ გამოსახულებას უნდა ჰქონდეს სახე:
$regex="/^[a-zA-Z]$/”;
დოკუმენტაციის წაკითხვა უნდოდა დაკვირვებით…


January 22nd, 2010 at 5:59 pm
ესეიგი ეგ ^$ სიმკაცრეს ნიშნავს ზოგადად??
$ მარტოე ეს რო დავსვა ბოლოში რა მოხება?
January 31st, 2010 at 12:23 am
სიმკაცრეს არ ნიშნავს
^ სტრიქონის დასაწყისს ნიშნავს, $ - ეს კიდევ დასასრულს