SQLLite und RegEx

  • Antworten:2
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 2

04.07.2020, 17:09:36 via Website

Hallo, hab stundenlang gegooglet aber nix gefunden.
Folgendes: habe eine umbestimmte Anzahl von Buchstaben (bsp.'chaane')
Nun Selektiere ich mit
'"SELECT * FROM " + TABLE_NAME +" WHERE lower(" + COLUMN_NAME_WORD + ") regexp '([chaane]{6})' "'
die Daten und erwarte, das z.B. 'Aachen' dabei herauskommt. Das tut es auch, aber leider auch z.B 'Cancan' obwohl nur ein 'c' und ein 'n' vorgegeben ist.
Hat jemand eine Idee, wie ich das Problem lösen kann?

Diskutiere mit!
  • Forum-Beiträge: 11.012

04.07.2020, 17:36:15 via App

SqLite implementiert RegEx nur als User function also kommt da ohne Definition Müll raus.

Nutze da eher eine Lib für:
https://github.com/mobi-life/sqlitere

Edith: und das RegEx würde ich überprüfen schau Mal bei regex101.com

— geändert am 04.07.2020, 18:07:06

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.303

05.07.2020, 07:56:11 via Website

[chaane]

Die eckigen Klammern definieren eine sog. Character-Group.
Sie matched genau EIN Zeichen der Eingabe und es darf JEDES Zeichen sein, das in der Klammer steht.
[ab] matcht ein a oder ein b
[aaaaaabbbbb] matcht auch ein a oder ein b - ist einfach nur redundant definiert.

Mit der Angabe von {6} als Quantität, matcht diese Regex also eine Zeichenkette aus 6 Zeichen, von denen jedes für sich betrachtet eins aus der eckigen Klammer sein darf.
Dass Cancan gematcht wird, ist also völlig richtig.

Hilfreich?
Diskutiere mit!
Empfohlene Artikel bei NextPit