I Ty możesz wspomóc rozwój serwisu dzięki dobrowolnej dotacji za pośrednictwem PayPal!
Kliknij w poniższą grafikę, aby pomóc. Dziękuję!
Informacja zostanie zamknięta za sekund(y).
Wyrażenia regularne wpisuje się w formie separator{wyrażenie}separator, np. /^([a-z]*)$/i lub @^(?:http://)?([^/]+)@i. Stosować można wszelkie formy zgodne z funkcjami sprawdzającymi poprawność wyrażeń regularnych w PHP (przykład).
Dzieje się tak dlatego, że wpisywanie wzorca z uwzględnieniem separatorów pozwala na dodanie modyfikatorów do niego. W wypadku ich braku skrypt domyślnie doda / na początku wyrażenia i / na jego końcu.
Generalnie to użytkownik wyznacza jaką treść i pod jakim kątem chce testować. Musi on jednak posiadać pełne prawa do publikacji testowanej treści, gdyż będzie ona dostępna dla innych internautów. Należy także unikać wpisywania zwrotów obscenicznych, wulgarnych, czy wskazujących zasoby niezgodne z polskim prawem. Użytkownik ponosi pełną odpowiedzialność za treści publikowane przez niego w serwisie. Na uzasadnioną prośbę osób trzecich poszczególne wpisy mogą zostać usunięte z serwisu.
Wyrażeniami regularnymi nazywami wzorce opisujące ciąg znaków.
W sieci znajduje się całe morze przykładowych wyrażeń. Warto zainteresować się przykładowo:
Zauważone błędy proszę zgłaszać w komentarzach pod tym artykułem.
Tak. Przy każdym sprawdzonym wzorcu, w kolumnie identyfikatora, znajduje się odnośnik do strony testowanego wyrażenia. Wystarczy skopiować odnośnik i podzielić się nim ze znajomymi.
Osoby chętne do pomocy mogą jej udzielić w następujący sposób:
Zmień język na polski.
Zmień język na angielski.
Pokaż/ukryj listę ostatnich testów.
Pokaż listę tylko moich testów.
Pokaż listę wszystkich testów.
Wyświetl zawartość kanału RSS.
Pokaż pomoc.
ID | Wyrażenie regularne | Ciąg znaków | Wynik | Zwracane ciągi znaków | Link |
---|---|---|---|---|---|
25529 | char*\; | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> # include <windows.h> typedef struct firmy //struktura { char miejsce_ranking[8]; char spadek_ranking[3]; char nazwa_firma[110]; char lokalizacja_firma[25]; char przychod[40]; char dynamika_przychod[35]; char zmiana_przychod[30]; char eksport[40]; char etaty[23]; }; int UsunSpacjeL(char *buffer, int size) //usuwa spacje po lewej stronie od znaków { int i = 0; char *temp; while(isblank(buffer[i])) { i++; } temp = malloc ((size -i) * sizeof(char)); strncpy(temp, buffer+i, size-i); strcpy(buffer, temp); buffer[size-i] = 0; return(size-i); } void UsunSpacjeP(char *buffer, int size) //usuwa spacje po prawej stronie od znaków { int i = size - 1; char *temp; while(isblank(buffer[i])) { i--; } temp = malloc ((i+1) * sizeof(char)); strncpy(temp, buffer, i+1); strcpy(buffer, temp); buffer[i+1]=0; } void DuzaLit(char *buffer) //zamienia znak na dużš literę { while(*buffer!=' ') { *buffer=toupper(*buffer); buffer++; } } void MalaLit(char *buffer) //zamienia znak na małš lietrę { while(*buffer!=' ') { *buffer=tolower(*buffer); buffer++; } } void SlowaNaDuze( char *buffer) // zamienia cišgi znaków zgodnie z poleceniem(tylko pierwszy duzy) dodałem również, aby zamieniał na dużš po kropce oraz myslniku dla lepszej czytelnoci { char *wsk = buffer; if( !*wsk ) wsk = buffer; *wsk = toupper( *wsk ); while( *++wsk ) if( *(wsk-1) == ' ' || *(wsk-1) == '.' || *(wsk-1) == '-' ) *wsk = toupper( *wsk ); wsk = buffer; } void PrzecinekNaKropke(char *buffer) // zamienia przecinek dziesietny na kropkę dziesiętnš { char *temp = strstr(buffer, ","); char *tempchar = malloc ( 50 * sizeof(char)); char *temptemp = buffer; if(temp) { strncpy(tempchar, buffer, temp-buffer); tempchar[temp-buffer] = '.'; tempchar[temp-buffer+1] = 0; strcat(tempchar, buffer+(temp-buffer+1)); strcpy(buffer, tempchar); } } void O_NaZero(char *buffer) // zamienia literę 'O' na cyfrę '0' { char *temp = strstr(buffer, "O"); char *tempchar = malloc ( 50 * sizeof(char)); char *temptemp = buffer; if(temp) { strncpy(tempchar, buffer, temp-buffer); tempchar[temp-buffer] = '0'; tempchar[temp-buffer+1] = 0; strcat(tempchar, buffer+(temp-buffer+1)); strcpy(buffer, tempchar); } } void I_NaJeden(char *buffer) // zamienia literę 'I' na cyfrę '1' { char *temp = strstr(buffer, "I"); char *tempchar = malloc ( 50 * sizeof(char)); char *temptemp = buffer; if(temp) { strncpy(tempchar, buffer, temp-buffer); tempchar[temp-buffer] = '1'; tempchar[temp-buffer+1] = 0; strcat(tempchar, buffer+(temp-buffer+1)); strcpy(buffer, tempchar); } } void Bd_NaZero(char *buffer) //po konsultacji z dr inż. Opalińskim dowiedziałem sie, że "bd" w moim pliku wejciowym nie sš brakami danych, które trzeba skorygować przy pomocy sztucznej sieci neuronowej, a jedynie złym skopiowaniem danych tego pliku.Dr inż. Opaliński zasugerował, aby "bd" traktować jako 0, ja poki co traktuje je jako 00, aby wyróżniały się w pliku. { char *temp = strstr(buffer, "bd"); char *tempchar = malloc ( 50 * sizeof(char)); char *temptemp = buffer; if(temp) { strncpy(tempchar, buffer, temp-buffer); tempchar[temp-buffer] = '0'; tempchar[temp-buffer+1] = '0'; tempchar[temp-buffer+2] = 0; strcat(tempchar, buffer+(temp-buffer+2)); strcpy(buffer, tempchar); } } int SprawdzPoleLiczba(char *buffer) // sprawdza odpowiednie pola liczbowe i wykrywa w nich dane błędne bšd niekompletne { int i = 0; int returning = 0; while(buffer[i] != 0) { if( (!isdigit(buffer[i])) && (buffer[i]!='.') && (buffer[i]!='%') && (buffer[i]!='-') ) { returning = 1; } i++; } return returning; } void PokazLinie(struct firmy * ranking_firmy) // do wyswietlania niekompletnych linii { printf("*************************************************************************n"); printf("UWAGA!!! Rekord,w ktorym wystepuje choc jedno pole z brakiem danych!!!n"); printf("Miejsce: %sn", ranking_firmy->miejsce_ranking); printf("Spadek z roku 2004: %sn", ranking_firmy->spadek_ranking); printf("Nazwa firmy: %sn", ranking_firmy->nazwa_firma); printf("Lokalizacja: %sn", ranking_firmy->lokalizacja_firma); printf("Przychody: %sn", ranking_firmy->przychod); printf("Dynamika przychodow: %sn", ranking_firmy->dynamika_przychod); printf("Zmiana dynamiki przychodow: %sn", ranking_firmy->zmiana_przychod); printf("Eksport: %sn", ranking_firmy->eksport); printf("Etaty: %snn", ranking_firmy->etaty); } //Częć Główna Programu ***************************************************************************************** main() { FILE * pFile; int i=0, j=0; char dane [106][288]; char nazwapliku[40]; char *wsk_koniec,*wsk_znak; char znak[9]; int wielkosc; int debuging = 0; //pomocnicza przy ew. wywietlaniu wczytanego pliku bšd nie struct firmy ranking_firmy[106]; printf("nntt ****************n"); printf("ttt*PROGRAM IMPORT*n"); printf("tt ****************nnnnn"); printf("ttPodaj nazwe pliku wraz z rozszerzeniem: "); scanf("%s",nazwapliku, "r"); system("cls"); printf("nnnProgram wyswietli tylko te rekordy, w ktorych znajduja sie braki danych..."); Sleep(2500); system("cls"); pFile = fopen (nazwapliku, "r"); if (pFile == NULL) { printf("aERROR!nBlad odczytu pliku...n"); } else { do{ //for(j=0;j<10;j++) { // w razie gdy chcę wczytywać mniejsza czec pliku(mniej rekordow) wsk_koniec=fgets(dane[i],sizeof(dane), pFile); wsk_znak=dane[i]; strncpy(znak, wsk_znak,1); znak[1] = 0; if(strcmp(znak, "ł")) { continue; } wsk_znak++; strncpy(znak, wsk_znak, 7); if(!strcmp(znak, "Miejsce")) { continue; } strncpy(ranking_firmy[i].miejsce_ranking,wsk_znak,7); wielkosc = UsunSpacjeL(ranking_firmy[i].miejsce_ranking, 7); UsunSpacjeP(ranking_firmy[i].miejsce_ranking, wielkosc); I_NaJeden(ranking_firmy[i].miejsce_ranking); if(debuging) { puts( ranking_firmy[i].miejsce_ranking); } wsk_znak=wsk_znak+8; strncpy(ranking_firmy[i].spadek_ranking,wsk_znak,18); wielkosc = UsunSpacjeL(ranking_firmy[i].spadek_ranking, 18); UsunSpacjeP(ranking_firmy[i].spadek_ranking, wielkosc); DuzaLit(ranking_firmy[i].spadek_ranking); if(debuging) { puts(ranking_firmy[i].spadek_ranking); } wsk_znak=wsk_znak+19; strncpy(ranking_firmy[i].nazwa_firma,wsk_znak,80); wielkosc = UsunSpacjeL(ranking_firmy[i].nazwa_firma, 80); UsunSpacjeP(ranking_firmy[i].nazwa_firma, wielkosc); MalaLit(ranking_firmy[i].nazwa_firma); SlowaNaDuze(ranking_firmy[i].nazwa_firma); if(debuging) { puts(ranking_firmy[i].nazwa_firma); } wsk_znak=wsk_znak+81; strncpy(ranking_firmy[i].lokalizacja_firma,wsk_znak,18); wielkosc = UsunSpacjeL(ranking_firmy[i].lokalizacja_firma, 18); UsunSpacjeP(ranking_firmy[i].lokalizacja_firma, wielkosc); MalaLit(ranking_firmy[i].lokalizacja_firma); SlowaNaDuze(ranking_firmy[i].lokalizacja_firma); if(debuging) { puts(ranking_firmy[i].lokalizacja_firma); } wsk_znak=wsk_znak+19; strncpy(ranking_firmy[i].przychod,wsk_znak,36); wielkosc = UsunSpacjeL(ranking_firmy[i].przychod, 36); UsunSpacjeP(ranking_firmy[i].przychod, wielkosc); PrzecinekNaKropke(ranking_firmy[i].przychod); O_NaZero(ranking_firmy[i].przychod); Bd_NaZero(ranking_firmy[i].przychod); if(debuging) { puts(ranking_firmy[i].przychod); } wsk_znak=wsk_znak+37; strncpy(ranking_firmy[i].dynamika_przychod,wsk_znak,29); wielkosc = UsunSpacjeL(ranking_firmy[i].dynamika_przychod, 29); UsunSpacjeP(ranking_firmy[i].dynamika_przychod, wielkosc); PrzecinekNaKropke(ranking_firmy[i].dynamika_przychod); O_NaZero(ranking_firmy[i].dynamika_przychod); Bd_NaZero(ranking_firmy[i].dynamika_przychod); if(debuging) { puts(ranking_firmy[i].dynamika_przychod); } wsk_znak=wsk_znak+30; strncpy(ranking_firmy[i].zmiana_przychod,wsk_znak,26); wielkosc = UsunSpacjeL(ranking_firmy[i].zmiana_przychod, 26); UsunSpacjeP(ranking_firmy[i].zmiana_przychod, wielkosc); PrzecinekNaKropke(ranking_firmy[i].zmiana_przychod); O_NaZero(ranking_firmy[i].zmiana_przychod); Bd_NaZero(ranking_firmy[i].zmiana_przychod); if(debuging) { puts(ranking_firmy[i].zmiana_przychod); } wsk_znak=wsk_znak+27; strncpy(ranking_firmy[i].eksport,wsk_znak,32); wielkosc = UsunSpacjeL(ranking_firmy[i].eksport, 32); UsunSpacjeP(ranking_firmy[i].eksport, wielkosc); PrzecinekNaKropke(ranking_firmy[i].eksport); O_NaZero(ranking_firmy[i].eksport); Bd_NaZero(ranking_firmy[i].eksport); if(debuging) { puts(ranking_firmy[i].eksport); } wsk_znak=wsk_znak+33; strncpy(ranking_firmy[i].etaty,wsk_znak,20); wielkosc = UsunSpacjeL(ranking_firmy[i].etaty, 20); UsunSpacjeP(ranking_firmy[i].etaty, wielkosc); O_NaZero(ranking_firmy[i].etaty); Bd_NaZero(ranking_firmy[i].etaty); if(debuging) { puts( ranking_firmy[i].etaty); } if( (SprawdzPoleLiczba((ranking_firmy+i)->przychod)) || (SprawdzPoleLiczba((ranking_firmy+i)->dynamika_przychod)) || (SprawdzPoleLiczba((ranking_firmy+i)->zmiana_przychod)) || (SprawdzPoleLiczba((ranking_firmy+i)->eksport)) || (SprawdzPoleLiczba((ranking_firmy+i)->etaty)) ) { PokazLinie(ranking_firmy+i); // tutaj drukowane tylko te rekord w których występujš braki danych } else { FILE *bin=fopen("Dane poprawione.txt", "wb"); if (bin == NULL) { printf("blad otwarcia BINARNEGO"); } fwrite(ranking_firmy, sizeof(PokazLinie(ranking_firmy)), 100000, bin); fclose(bin); } i++; } while (wsk_koniec!=NULL); } fclose (pFile); system("PAUSE"); } |
fałsz | Link |