Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne w c++
sazian
post 26.05.2017, 09:09:30
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Witam,
piszę prostą aplikację w ionic3 w której używam bazy sqlite,
ponieważ potrzebuję użyć wyszukiwania regexp zainstalowałem plugin cordova-sqlite-evcore-extbuild-free.

Wszystko było by pięknie gdyby nie dziwny problem w wyrażeniami.
Przykładowy tekst "ZASŁONA wenge" i szukam w nim wyrażenia "[zZżŻźŹ][aAąĄ][śŚsS][łŁlL][oOóÓ]"
czyli jest to napis "zasło" gdzie polskie znaki mogą być z ogonkami lub bez. Do tego w ionicu wyrażenia są case sensitive więc muszę podawać oba warianty.

Wyszukiwarka niestety nie znajduje takiego wyrażenia, więc sprawdziłem je w php i działa, sprawdziłem w js, również działa.

Trochę poszperałem w tym pluginie i znalazłem bibliotekę w c++ która dodaje tego regexpa, po drobnych przeróbkach skleciłem taki skrypt testowy
Kod
#include <stdlib.h>
#include <string.h>
#include <regex.h>
#include <iostream>

using namespace std;
const static int regex_compile_flags = REG_EXTENDED;


#define tofind    "[zZżŻźŹ][aAąĄ][śŚsS][łŁlL][oOóÓ]"

int main(int argc,  char** argv)
{
    regmatch_t rm[2];
    regex_t re;
    int r;
    regcomp(&re, tofind, regex_compile_flags);

    r = regexec(&re, "ZASŁONA wenge", 2, rm, 0);
    if (r == 0) {
        printf("Match!\n");  
    } else {
        printf("NO match!\n");
    }
    return 0;
}


Po uruchomieniu wyświetla "NO match!".
Ale jak z wyrażenia usunę sekcję [oOóÓ] to już działa ohno-smiley.gif
Jeśli wstawię na końcu "O" to już nie działa sad.gif

Może macie jakieś pomysły co tu jest nie tak lub jak to zrobić inaczej ?
Dobra wiem że można dodać kolumnę bez polskich znaków i szukać zwykłym LIKE, ale może jednak dało by się inaczej ?

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:30