Requlyar ifadə

Vikipediya, azad ensiklopediya
Solavirum (müzakirə | töhfələr) (KU: Kateqoriya:Formal dillərKateqoriya:Formal dillər nəzəriyyəsi) tərəfindən edilmiş 12:01, 23 aprel 2024 tarixli redaktə
(fərq) ← Əvvəlki versiya | Son versiya (fərq) | Sonrakı versiya → (fərq)
Naviqasiyaya keç Axtarışa keç
Mavi vurğular requlyar ifadə modelinin uyğunluq nəticələrini göstərir: /h[aeiou]+/g (h hərfindən sonrakı saitlər).

Requlyar ifadə (qısa şəkildə regex və ya regexp),[1] və ya rasional ifadə[2][3] — mətndə nümunə uyğunluğunu təyin edən simvollar ardıcıllığı və mətndə axtarışı və altsətirlərlə manipulyasiyanı yerinə yetirən formal dil.[4] Adətən, belə nümunələr sətirlərdə "tap" və ya "tap və dəyişdir" əməliyyatları və ya daxilolmaların yoxlanılması üçün sətir axtarış alqoritmləri tərəfindən istifadə olunur. Requlyar ifadə üsulları nəzəri kompüter elmindəformal dil nəzəriyyəsində inkişaf etdirilir.

Requlyar ifadələr anlayışı 1950-ci illərdə amerikalı riyaziyyatçı Stiven Koul Klini requlyar dil anlayışını rəsmiləşdirdiyi zaman başlamışdır. Onlar, Unix mətn emal yardım proqramları ilə ümumi istifadəyə verilib. 1980-ci illərdən requlyar ifadələrin yazılması üçün müxtəlif sintaksislər mövcuddur ki, bunlardan biri POSIX standartı, digəri isə geniş istifadə olunan Perl sintaksisidir.

Requlyar ifadələr axtarış sistemlərində, mətn prosessorlarınınmətn redaktorlarının axtarış və dəyişdirmə dialoqlarında, sedAWK kimi mətn emal proqramlarında və leksik təhlildə istifadə olunur. Requlyar ifadələr bir çox proqramlaşdırma dillərində də dəstəklənir.

Stiven Koul Klini, konseptin yaradıcısı

Requlyar ifadələr 1951-ci ildə riyaziyyatçı Stiven Koul Klini requlyar hadisələr adlanan riyazi yazısından istifadə edərək requlyar dilləri təsvir edərkən yaranmışdır.[5][6] Bunlar nəzəri kompüter elmində, avtomatlar nəzəriyyəsinin alt sahələrində (hesablama modelləri) və formal dillərin təsviri və təsnifatında yaranmışdır. Nümunə uyğunluğunun digər erkən tətbiqlərinə requlyar ifadələr əvəzinə öz nümunə uyğunluq konstruksiyalarından istifadə edən SNOBOL dili daxildir.

Requlyar ifadələr 1968-ci ildən iki istifadədə populyarlaşmağa başladı: mətn redaktorunda nümunə uyğunluğu[7] və kompilyatorda leksik təhlil.[8] Proqram şəklində requlyar ifadələrin ilk ortaya çıxışlarından biri Ken Tompsonun mətn fayllarında nümunələri uyğunlaşdırmaq üçün bir vasitə olaraq QED redaktorunda Klin yazısını qurması idi.[7][9][10][11] Sürət üçün Tompson JIT kompilyasiyasının mühüm erkən nümunəsi olan CTTS-də IBM 7094 koduna JIT ilə requlyar ifadə uyğunluğunu tətbiq etdi.[12] Daha sonra o, bu funksiyanı ed adlı Unix redaktoruna əlavə etdi və nəticədə məşhur axtarış aləti grep-in requlyar ifadələrdən istifadə etməsinə səbəb oldu.[13]

  1. Goyvaerts, Jan. "Regular Expression Tutorial – Learn How to Use Regular Expressions". Regular-Expressions.info. 2016-11-01 tarixində arxivləşdirilib. İstifadə tarixi: 2016-10-31.
  2. Mitkov, Ruslan. The Oxford Handbook of Computational Linguistics. Oxford University Press. 2003. səh. 754. ISBN 978-0-19-927634-9. 2017-02-28 tarixində arxivləşdirilib. İstifadə tarixi: 2016-07-25.
  3. Lawson, Mark V. Finite Automata. CRC Press. 17 September 2003. 98–100. ISBN 978-1-58488-255-8. 27 February 2017 tarixində arxivləşdirilib. İstifadə tarixi: 25 July 2016.
  4. İsmayıl Calallı. "regular expression" // Rasim Əliquliyev (redaktor). İnformatika terminlərinin izahlı lüğəti (az.). Bakı: "İnformasiya texnologiyaları" / "Bakı" nəşriyyatı. 2017. səh. 631. ISBN 978-9952-434-82-8. 6 sentyabr 2023 tarixində arxivləşdirilib (PDF) (#archive_missing_url).
  5. Kleene, 1951
  6. Leung, Hing. "Regular Languages and Finite Automata" (PDF). New Mexico State University. 16 sentyabr 2010. 5 dekabr 2013 tarixində arxivləşdirilib (PDF). İstifadə tarixi: 13 avqust 2019. The concept of regular events was introduced by Kleene via the definition of regular expressions.
  7. 1 2 Thompson, 1968
  8. Johnson və b. 1968
  9. Kernighan, Brian. A Regular Expressions Matcher // Beautiful Code. O'Reilly Media. 2007-08-08. 1–2. ISBN 978-0-596-51004-6. 2020-10-07 tarixində arxivləşdirilib. İstifadə tarixi: 2013-05-15.
  10. Ritchie, Dennis M. "An incomplete history of the QED Text Editor". 1999-02-21 tarixində arxivləşdirilib. İstifadə tarixi: 9 October 2013.
  11. Aho, Ullman, 1992, 10.11 Bibliographic Notes for Chapter 10, p. 589
  12. Aycock, 2003. səh. 98
  13. Raymond, Eric S. citing Dennis Ritchie. "Jargon File 4.4.7: grep". 2003. 2011-06-05 tarixində arxivləşdirilib. İstifadə tarixi: 2009-02-17.

Xarici keçidlər

[redaktə | mənbəni redaktə et]