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;
}
#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

Je¶li wstawię na końcu "O" to już nie działa

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 ?