Regulyar ifodalar

REGULYAR IFODALAR
StringBuilder va String sinflari satrlar bilan ishlash uchun etarli funksionallikni taqdim etadi. Lekin .NET yana bir kuchli imkoniyati bu regulyar ifodalar. Regulyar ifodalar katta matnlarni qayta ishlash bo‘yicha samarali va moslashuvchan usul hisoblanadi, bu esa standart operatsiyalardan foydalanish bilan solishtirganda kod hajmini sezilarli darajada kamaytirishga imkon beradi.
.NET-da regulyar ifodalar asosiy funktsionalligi System.Text.RegularExpressions nomlar fazosi bilan bog‘lik. Regulyar ifodalar bilan ishlashda esa markaziy sinf Regex sinfidir. Masalan, bizda ayrim matn mavjud va uning barcha so‘z formalarini topishimiz kerak. Buni Regex sinfi bilan bajarish juda oson:
using System;
using System.Text.RegularExpressions;
namespace Reguliyar_ifodakar
{
class Program
{
static void Main(string[] args)
{
string s = "Dasturchi dasturiy ta'minot yaratishda dasturlash tillaridan foydalanadi";
Regex regex = new Regex(@"dahhstur(\w*)", RegexOptions.IgnoreCase);
MatchCollection matches = regex.Matches(s);
if (matches.Count > 0)
{
foreach (Match match in matches)
Console.WriteLine(match.Value);
}
else
{
Console.WriteLine("Moslik topilmadi");
}
}
}
}
Bu erda gapdan “dastur” so‘zining barcha uchragan qidirilgan va har xil variantlari topilgan. Regex ob’ektining konstruktoriga qidirish uchun regulyar ifodani beriladi. Keyinchalik reguliyar ifodalar sintaksisining ayrim elementlarini tahlil qilamiz, hozircha esa dastur(\w *) ifodasi «dastur» ildiziga ega boʻlgan hamma soʻzlarni topish va undan keyin turli miqdordagi belgilar turishi mumkinligini anglatadi. \ w ifodasi alifbo-raqamli simvolni anglatadi, yulduz esa ifodadan soʻng ularning noma’lum sonini ko‘rsatadi - ular bir, ikki, uch yoki umuman bo‘lmasligi mumkin.
Regex sinfining Matches usuli regulyar ifodalar qoʻllaniladigan satrni qabul qiladi va topilgan so‘zlarning kolleksiyasini qaytaradi.
Ushbu kollektsiyaning har bir elementi Match ob’ektini namoyish etadi. Uning Value xossasi topilgan mosliklarni qaytaradi.
RegexOptions parametri
Regex sinfi ob’ektnining boshlang‘ich initsializatsiyasini amalga oshirish imkonini beradigan qator konstruktorlarga ega. Konstruktorlarning ikkita versiyasi parametrlardan biri sifatida RegexOptions ro‘yxatini qabul qiladi. Ushbu ro‘yxatda qabul qilinadigan qiymatlarning ba’ztlari berilgan:
Compiled: ushbu qiymatni o‘rnatishda regulyar ifoda kompilyatsiya qilish uchun to‘planadi, bu tezroq amalga oshirilishini ta’minlaydi
CultureInvariant: ushbu qiymatni o‘rnatishda regional farqlar inobatga qaratilmaydi
IgnoreCase: ushbu qiymatni o‘rnatganda registr inobatga olinmaydi
IgnorePatternWhitespace: satrdagi bo‘sh joylarni( probellarni)olib tashlaydi va # simvolidan boshlab izohlarga ruxsat beradi
Multiline: matnni ko‘p satrli rejimda ko‘rib chiqish kerakligini ko‘rsatadi. Bunday rejimda “^ ” va“ $ ” simvollari butun matnning boshlanishi va oxiriga emas, har qanday satrning boshlanishi va oxiriga mos keladi
RightToLeft: o‘ngdan chapga satrni o‘qishni ta’kidlaydi
Singleline: bir satrlik rejimni o‘rnatadi, butun matnni bir satr sifatida ko‘rib chiqadi
Masalan:
Regex regex = new Regex(@"dastur (\w*)", RegexOptions.IgnoreCase);
Zarur bo‘lsa, bir nechta parametrlarni o‘rnatish mum
Regex regex = new Regex(@"dastur(\w*)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|