воскресенье, 19 декабря 2010 г.

Regular expression. Dars 1

Ochig'i ikki kundan beri PHP da CMS yozish bilan ovoraman. Lekin hozir blogimga o'zim oldin o'rgangan REGEX haqida yozmoqchiman. Sababi, regex ni o'rganmasimdan oldin bir qancha tekshirishlar murakkablik tug'dirardi lekin REGEX orqali ishimni 90% (qo'pol qilib hisoblaganda) ga kamaytirdim. Keling mavzuga qaytsak.

Keling ozgina regex haqida. RegEx yoki RegExp (ing. Regular expression, Регулярные выражения). Qatorlar bilan ishlashga mo'ljallanib, qatorlardan qismlarni ajratib olish, aniq shartlarga tekshirib beradigan til.
Ushbu tilni qo'llash tilga qarab har xil usulda bo'lishi mumkin, lekin asosiy qatorni tekshiradigan qismi barcha tilda bir xil bo'ladi.
1-jadval. RegEx ni tilda qo'llash shakllari.
TilRegEx
1PHPpreg_match("/{shartli_qator}/{parametrlar}", $qator);
2C#using System.Text.RegularExpressions;
...
Regex regex = new Regex("{shartli_qator}", "{parametrlar}");

Endi RegEx (bizda {shartli_qator}) haqida. Barcha tillardagi kabi ushbu tilda ham bir qancha shartli belgilashlar kiritilgan.
2-jadval. RegEx shartli belgilari.
BelgiIzoh
.Har qanday bitta belgi
+Kamida 1 ta va undan ko'p belgilar. {1,} kabi ham qo'llasa bo'ladi.
*Bo'lmasiligi ham mumkin, ya'ni {0,}
?Shart belgisi. Bor yoki yo'qligiga tekshiradi.
^Qator boshi
$Qator oxiri
|Yoki shartini bajaradi. Tanlash.
\Shartli belgilarni qo'llash uchun (oldiga qo'yiladi).
{...}Belgilar soni intervalini ko'rsatish
(...)Qatorni qismlarga ajratish
[...]Belgilar to'plami

Belgilar to'plamida ^ (shapkacha) ko'rsatilgan belgilardan tashqari belgilar ekanligini bildiradi. Ya'ni ^1 bo'lsa 1 dan tashqari barchasi. - (minus) oraliqni ko'rsatadi.
Bu belgilardan tashqari, ayrim qisqarmalar ham kiritilgan.
3-jadval. Ayrim RegEx qisqartmalari.
QisqartmaIzoh
\dBarcha raqamlar ya'ni [0-9]
\DRaqamlardan tashqari barcha belgilar ya'ni [^0-9]
\wBarcha "so'z" belgilari. Bunga harflar, sonlar va pastgi chiziq (_). [a-zA-Z0-9_]
\W"so'z" belgilaridan tashqari belgilar. [^\w]
:alnum:Harflar va sonlar.
:alpha:Harflar.
:ascii:ACSII jadvalidagi 0-127 gacha bo'lsan belgilar
:blank:Bo'shlik yoki tabulyatsiya
:digit:Raqamlar (\d)
:lower:Kichik harflar
:upper:Bosh harflar
:word:"so'z" belgilari (\w)

RegEx haqida ayrim ko'nikmalarga e'ga bo'ldik.
Hozircha shu. Qolganlarini kuzatib boring.

Комментариев нет:

Отправить комментарий