QT C++ wyrażenia regularne

Odpowiedz Nowy wątek
2011-08-24 23:57
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ę :)

Pozostało 580 znaków

2011-08-25 01:08
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.or[...]ts/qt_tutorial/chapter10.html

edytowany 3x, ostatnio: Spine, 2011-08-25 01:11

Pozostało 580 znaków

2011-08-25 01:20
0

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


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2011-08-25 02:23
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ę ;)

edytowany 3x, ostatnio: PoziomeQ, 2011-08-25 03:16

Pozostało 580 znaków

2011-08-25 09:21
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

edytowany 3x, ostatnio: Spine, 2011-08-25 12:38

Pozostało 580 znaków

2011-08-25 12:30
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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