Problem z regexp

dział ogólny

Re: Problem z regexp

Nowy postprzez Darek_C++ » środa, 16 stycznia 2013, 10:18

Napisz co jakie dane chcesz konkretnie wyciągnąć do zmiennej, bo nic konkretnego nie podajesz ....
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Cyfrowy Baron » środa, 16 stycznia 2013, 16:23

Darek_C++ napisał(a):bo nic konkretnego nie podajesz ....


No jak to nie podaje. Chce wyciągnąć np. tekst, tak:

KOD text:     UKRYJ  
Pon
7:30
tp


I problem został już rozwiązany, gdyż wyrażenie które zastosował było poprawne, ale jak się w kodzie programu wpisuje w łańcuch znaków kreskę ułakową odwróconą, to trzeba ją poprzedzić taką samą kreską, tak jest np. gdy podaje adres pliku: "c:\\windows\jakiś plik.txt" i z przypadku wyrażeń ta zasada również obowiązuje, dlatego wyrażenie powinno wyglądać tak jak podałem, czyli: (.{3})(\\d*:\\d*|\\d*)(tp|tn), dane są zwracane na indeksach 1,2 i 3.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Darek_C++ » czwartek, 17 stycznia 2013, 00:06

Kropka w .{3} nie jest najlepsza, bo dopasowuje do każdego znaku, wiec jak by było coś takiego
1237
,,,7
---8
itd to tez dopasuje co w tym wypadku było by błędne. BY wyrażenie było bardziej precyzyjne powinien użyć zakresu znaków w tym wypadku [a-z].
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Pitek » czwartek, 17 stycznia 2013, 00:43

Tyle że w moim przypadku dane zbierane do parsowania mają zawsze taką postać ponieważ są to dane z pól input z HTML5.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows 7Chrome

Re: Problem z regexp

Nowy postprzez Cyfrowy Baron » czwartek, 17 stycznia 2013, 05:47

Darek_C++ napisał(a):użyć zakresu znaków w tym wypadku [a-z].


W tym wypadku musiałby użyć zakresu [a-zA-Z]
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Darek_C++ » czwartek, 17 stycznia 2013, 09:06

pitek3010 napisał(a):Tyle że w moim przypadku dane zbierane do parsowania mają zawsze taką postać ponieważ są to dane z pól input z HTML5.
Programista musi tak pisać kod by był przygotowany na "złe dane". Co więcej - jeśli pobierasz dane od usera z wykorzystaniem podobnych wyrażeń regularnych możesz napisać funkcję walidacji danych która wymusi, że user może wprowadzić dokładanie taki format jaki określisz :)

Dokładnie Cyforowy Baronie - moje niedopatrzenie, bo ma tam dużą literę :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez polymorphism » czwartek, 17 stycznia 2013, 11:10

BY wyrażenie było bardziej precyzyjne powinien użyć zakresu znaków w tym wypadku [a-z].

Bardziej precyzyjne będzie takie wyrażenie: (Pon|Wto|Śro|Czw|Pio|Sob|Nie).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Pitek » czwartek, 17 stycznia 2013, 13:49

Darek_C++ doskonale o tym wiem że tworzy się programy "idiotoodporne" ale tam w HTML5 nie ma możliwości błędu usera bo są to pola typu checkbox a ich właściwość name jest ustawiona na sztywno. Z innych uwarunkowań wynika ze skróty dni tygodnia są takie a nie inne... to nie istotne ważne ze regexp już dziala. Odnosząc się do ostatniej wypowiedzi polymorphism jest podobnie jak wyżej nie potrzebuje parsować tylko takich wyrażeń jak Pan podał bo są one i tak przypisane na sztywno więc wiem czego moge się spodziewać kwestia tylko zastosowania regexp'a do tego aby nie bawić się na ciągach znaków i już ;)
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows 7Chrome

Re: Problem z regexp

Nowy postprzez Darek_C++ » czwartek, 17 stycznia 2013, 14:26

pitek3010 napisał(a):Darek_C++ doskonale o tym wiem że tworzy się programy "idiotoodporne" ale tam w HTML5 nie ma możliwości błędu usera bo są to pola typu checkbox a ich właściwość name jest ustawiona na sztywno. Z innych uwarunkowań wynika ze skróty dni tygodnia są takie a nie inne..
W takim wypadku powinieneś zainteresować się określoną strukturą danych np XML - to tak na marginesie. Wtedy nie musiał byś parsować danych .
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z regexp

Nowy postprzez Pitek » czwartek, 17 stycznia 2013, 15:51

Wiem, wiem że lepiej, praktyczniej, bardziej optymalnie, poprawniej byłoby inaczej się za to zabrać jednak z pewnych względów uparłem się na taki sposób ;)
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows 7Chrome

Poprzednia strona

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości