regular expressions



facebook twitter əjdaha lazımdı   izlə   lələ   mən   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

    --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.

    href="https://www.pastebin.com/z0d6cdGi" target="_blank" class="sonses" rel="nofollow">www.pastebin.com/z0d6cdGi 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!