Bogdan Taranta

Bogdan Taranta Business Solutions
Manager

Temat: wyrazenia regularne - chyba proste pytanie

Witam,

Wyrażenie regularne jest w stringu A, natomiast odnaleziony, pasujący do niego tekst w stringu B. Chciałbym teraz pobrać sobie do listy te fragmenty z B, które zostały dopasowane przy użyciu znaków specjalnych itd, czyli wyodrębnić tą "zmienną" część.

Będę bardzo wdzięczny za pomoc!

Z pozdrowieniami,
Bogdan

konto usunięte

Temat: wyrazenia regularne - chyba proste pytanie

Jeśli dobrze rozumiem pytanie, to do szukania interesuje Cię metoda search(), która zwraca Matching Object, który z kolei ma metody group() i groups(), które wypluwają te dopasowane kawałki tekstu.

search() zwraca tylko pierwsze dopasowanie

alternatywnie możesz użyć findall(), które zwróci listę grup dopasowań (nie zachodzących na siebie) z całego tekstu.

tak czy inaczej, po szczegóły zapraszam tutaj:
http://docs.python.org/lib/module-re.html
http://docs.python.org/lib/re-objects.html
http://docs.python.org/lib/match-objects.htmlPiotr Łusakowski edytował(a) ten post dnia 17.09.08 o godzinie 19:18

Temat: wyrazenia regularne - chyba proste pytanie

Ja od siebie jeszcze to polecę:

http://diveintopython.org/regular_expressions/index.ht...

może też się przyda.

Pozdrawiam,
Dawid.
Bogdan Taranta

Bogdan Taranta Business Solutions
Manager

Temat: wyrazenia regularne - chyba proste pytanie

Bardzo dziękuje za pomoc - metoda group to właśnie to, czego poszukiwałem. Dalej już powinienem sobie poradzić :)

Z pozdrowieniami,
Bogdan

konto usunięte

Temat: wyrazenia regularne - chyba proste pytanie

Ja mam pytanie z trochę innej beczki. Jak powinno wyglądać wyrażenie regularne, które wyszuka mi w tekście wyrazy, w których występują obok siebie takie same litery? np. senny, denny...
Stanisław P.

Stanisław P. Software designer

Temat: wyrazenia regularne - chyba proste pytanie

Ktoś mądry kiedyś powiedział: Ludzie widząc jeden problem czasem myślą - "wiem, użyję wyrażeń regularnych". Wtedy mają dwa problemy.

prev = None
doubles = []
for n,c in enumerate(text):
if c==prev:
doubles.append (n-1)
prev=c

Przerobienie doubles na listę wyrazów jest trywialne i pozostawione jako ćwiczenie dla czytelnika ;)Stanisław Pitucha edytował(a) ten post dnia 03.04.09 o godzinie 14:05
L P

L P podskala.net

Temat: wyrazenia regularne - chyba proste pytanie

Tak myślą a w szczególności Ci, którzy mają to zrobić w C - ale.. czy nie należy im wybaczyć ?

:))Łukasz Podkalicki edytował(a) ten post dnia 03.04.09 o godzinie 14:24
Stanisław P.

Stanisław P. Software designer

Temat: wyrazenia regularne - chyba proste pytanie

Łukasz Podkalicki:
Tak myślą a w szczególności Ci, którzy mają to zrobić w C - ale.. czy nie należy im wybaczyć ?
Nie bardzo rozumiem... chciałeś powiedzieć, że w C to zrobić trudniej?
for(i=1;i<strlen(text);i++) {
if(text[i]==text[i-1])
zrób_coś_z_dublem(text, i);
}

?Stanisław Pitucha edytował(a) ten post dnia 03.04.09 o godzinie 16:18
Marcin S.

Marcin S. Software
craftsmanship

Temat: wyrazenia regularne - chyba proste pytanie

 txt = u'Ja mam pytanie z trochę innej beczki. Jak powinno wyglądać wyrażenie regularne, które wyszuka mi w tekście wyrazy, w których występują obok siebie takie same litery? np. senny, denny...
aa aasdf assdff'
o = re.findall (r'\b(\w*(\w)\2\w*)\b', txt, re.U|re.L)
pprint (o)
L P

L P podskala.net

Temat: wyrazenia regularne - chyba proste pytanie

Staszku,
To nie było do przykładu tylko ogólnie(a Ty mi tu z tablicą czarów i repetycją prostą ..eh) ;P

konto usunięte

Temat: wyrazenia regularne - chyba proste pytanie

Dzięki za pomoc :)

Następna dyskusja:

Pytanie...




Wyślij zaproszenie do