QT C++ wyrażenia regularne

0

Cześć, ogólnie jestem jeszcze zieloniutki w programowaniu i właśnie wykonuje swój pierwszy "większy" projekt.
więc mój problem jest taki: muszę zrobić line edita(od razu uspokajam że jest to zamierzone i znam takie narzędzie jak "date edit" czy "calendar") w którym użytkownik wpisze datę np. 12.05.2008
ale ale, zanim przejdzie do następnego kroku to ja muszę wiedzieć czy on aby nie kłamczuszy i sprawdzić czy rzeczywiście wpisał datę, a nie co innego, dodatkowo czy wpisał ją właśnie w takim formacie:
2 liczby, kropka, 2 liczby, kropka, 4 liczby
i tutaj miśki pyśki pojawia się pytanie jak taki QRegExp ułożyć?
dodam że zapoznałem się z dokumentacją i niestety nie za dużo wywnioskowałem, więc proszę starszych kolegów o pomoc i krótkie wytłumaczenie jak układać wyrażenia tego typu

Z góry bardzo dziękuję :)

0

No cóż... wstępnie możesz sprawdzić czy podana data jest w odpowiednim formacie:

[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]

Ale potem raczej żadne wyrażenie regularne Ci nie pomoże, żeby sprawdzić, czy ten dzień istniał - np. 29 luty tylko w roku przestępnym itp. Do tego musisz już napisać jakiś algorytm, albo spróbuj wykorzystać klasę QValidator (nie wiem jak, sam dopiero zaczynam z QT :) ).

Tutaj masz kilka przykładów budowania wyrażeń regularnych:
http://pl.wikipedia.org/wiki/Wyra%C5%BCenie_regularne

Są programy do testowania wyrażeń regularnych. Ja pod Ubuntu używam Kiki.

Wracając do walidacji, tutaj może znajdziesz coś ciekawego: http://www.digitalfanatics.org/projects/qt_tutorial/chapter10.html

0

Ustaw walidator na taki jak podaje Spine,a potem sprawdzisz poprawność poprzez QDate.isvalid()

0

dzięki bardzo za pomoc, mniej-więcej rozwiązaliście mój mały problem ;)

//edit:
jakby ktoś miał jeszcze jakieś alternatywne rozwiązania to chętnie wysłucham :)
tak dla samego siebie ;)

//edit2:
ano i pojawił mi się następny problem.
wyobraźmy sobie sytuację że mamy dokument. z dokumentu zczytujemy tekst który wygląda dla przykładu tak: "adjfaijgiajdgoijgio 12.12.2012 agpaojgipajgae 2352.51 akofpakg:lafg"
i co jeśli chciałym z tego dokumentu zczytać tylko datę, a resztę pominąć ? dodatkowo chciałbym tą date wpisać do line edita, jaka funkcja może posłużyć mi w tej sytuacji? (głównie chodzi o przekonwertowanie QRegExp na QString)

z góry dziękuję ;)

1

tak u mnie wygląda w Python'ie przechodzenie przez wszystkie stringi pasujące do wyrażenia:
for match in re.findall(regexp, Input,re.U|re.I|re.M):
regexp to wyrażenie regularne, Input to tekst wejściowy, a kolejne parametry to dodatkowe opcje.

W Qt również masz taką opcję:
metoda capturedTexts() z klasy QRegexp zwraca Ci listę stringów - http://doc.qt.nokia.com/latest/qregexp.html#capturedTexts

0

super, rozwiązałem juz problem, dziękuję bardzo za pomoc ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1