[Linux-programlama] Re: Regex hakkında

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Yuce Tekol (yucetekol@gmail.com)
Date: Sat 28 Jul 2007 - 22:14:21 EEST


Merhaba,

Duzenli ifadenizde gruplari kullanirsaniz ve ifadeyi her satir icin
calistirirsaniz sanirim istediginiz olacak.

Python icin:

import re

di = re.compile(r"(\d+)\s*(L)?\s*(X[+-]\d+(?:\.\d+)?)?\s*(Y[+-]\d+(?:\.\d+)?)?\s*(Z[+-]\d+(?:\.\d+)?)?\s*(R\d+)?\s*(F\d+)?\s*((?:M\d+)(?:\s*M\d+)*)?")
for line in file("veri.dosyasi"):
   print "="*10
    r = di.search(line)
    for i, g in enumerate(r.groups()):
        print i, ":", g

Yukaridaki duzenli ifade, M parametrelerini ayni grupta toplayacak ve
tum parametreleri isimleriyle birlikte alacak, mesela X+123.45; eger
sadece +123.45 kismina ihtiyaciniz varsa, duzenli ifadeyi asagidaki
gibi degistirebilirsiniz:

(\d+)\s*(L)?\s*(?:X([+-]\d+(?:\.\d+)?))?\s*(?:Y([+-]\d+(?:\.\d+)?))?\s*(?:Z([+-]\d+(?:\.\d+)?))?\s*(?:R(\d+))?\s*(?:F(\d+))?\s*((?:M\d+)(?:\s*M\d+)*)?

(L ve M parametreleri yine isimleriyle kalacak).

Yukaridaki programi
http://www.geocities.com/yucetekol/files/regexp_s.zip adresinden
indirebilirsiniz.

Yuce Tekol

28.07.2007 tarihinde Neşet ÖZKAN <nozkan@gmail.com> yazmış:
> Merhaba
>
> 1 L X+15.263 Y-25.63 Z-25.75 R0 F3500 M3 M5
>
> formatında bir satırlardan oluşan bir text dosyam var.
>
> 1
> L
> X+.....,
> Y+....,
> Z+......
> R0
> F3500
> M3
> M5
> Kısımlarını birer grup olarak kabul edelim.
> Bu text dosyasında kı satırlarda bazen bu alanlardan biri olmayabiliyor
> Yani satırlar;
>
> 1 L X+15.263 Y-25.63 Z-25.75 R0 F3500 M3 M5
> 2 L X+15.263 Y-25.63
> 3 L X+15.263
> 4 Z-300 F3500
> 5 M3
>
> şeklinde olabiliyor.
>
> Şimdi sorum şu.
> Mono C# yada pythonda;
>
> Bu satırlardan bu grupların değerlerini almak istediğimde
> herbir alan için bir regex ifadesi düzenleyip bu ifadeleri bu satırlar
> üzerinde teker teker mi çalıştırmak gerekiyor
> Yada bir regex ifadesiyle bu satırda bu gruplardan hangileri varsa onların
> değerini al diyebiliyormuyum.
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.