regular expressions


facebook twitter əjdaha lazımdı   googllalink

    1. programlama dillərində (python,java və.s) mətnin içərisindən lazım olan hissələri tapmaq və çıxarmaq üçün istifadə olunan bir növ axtarış sistemidir.
    Nümunə ilə göstərsək :
    qeyd : bütün nümunələr python programlama dili üzərindən göstəriləcək.

    belə bir mətn faylımız var, adı main.txt dir

    --text--

    From: stephen.marquard@uct.ac.za : test keyword
    Subject: [sakai] svn commit: r39772 - content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl
    X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
    X-Content-Type-Message-Body: text/plain; charset=UTF-8
    Content-Type: text/plain; charset=UTF-8
    X-DSPAM-Result: Innocent
    X-DSPAM-Processed: Sat Jan 5 09:14:16 2008
    X-DSPAM-Confidence: 0.8475
    X-DSPAM-Probability: 0.0000
    Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39772 link

    --text--


    bizə lazımdır ki, "X-Content" lə başlayan (ancaq sətirin başında olmalıdır, əgər içərisində olsa döndürməyəcək) sətirləri seçək, bunu üçün ilk öncə python regular expressions kitabxanasını daxil etməliyik.

    # - > şərhlər üçündür.

    code link

    --code--
    import re #kitabxananın daxil edilməsi
    hand = open('main.txt') #tələb olunan faylın açılmasə

    for line in hand: #faylın hər sətrinə tətbiq olunacaq əmrlər, methodlar üçün for istifadə olunur
    line = line.rstrip() #hər sətrin sağındakı n new lineı yığışdırmaq üçün
    if re.search('^x-content', line): # ^ - işarəsi ondan sonra gələn string ifadəni ( nümunədə "x-content")
    print line #yalnız cümlənin əvvəlində axtarmalı olduğunu deyir.print uyğun nəticələri
    #yazdırmaq üçündür.

    --code--

    nəticə:
    X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8
    X-Content-Type-Message-Body: text/plain; charset=UTF-8


    ^ -> cümlənin əvvəlində lazımi mətni axtarırdısa $ - cümlənin sonunda axtarır.
    . -> hər hansı simvolu (hərf,rəqəm, durğu işarəsi) işarə edir.
    ulduz işarəsi -> simvolu bir neçə dəfə təkrarlayır.
    və.s


    --spoiler--

    hələ də oxuyursansa təşəkkür edirəm

    --spoiler--


    iki növü vardır: greedy və non greedy
    nümunə ilə izah etsək:

    --one line sentence--
    test 5565 : word : main part
    --one line sentence--

    əgər cümlə içərisindən test .* : hissəsini seçmək istəsək test : word : qeydə alacaq, bu hal greedy (acgöz) adlanır.
    sadəcə test 5565 : hissəsinin qeydə alınması üçün non greedy regular expressionlar istifadə olunmalıdır.

    sözlükdəki programçıların çox işinə yarayacağını düşünürəm, öyrənməyi şiddətlə tövsiyə edirəm.


sən də yaz!