Suchmuster mit "oder"

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Suchmuster mit "oder"

Beitrag von Hago »

Hallo,

ich durchsuche eine Tabelle mit diesem Suchmuster:

oSuche.SetSearchString("^01")

das klappt prima.
Nur würde ich gerne auch gleich nach "^31" suchen. Also nach "^01 oder ^31". Das krieg ich nicht hin.
Kann mir da jemand helfen?

Gruß, Hago
Guivanni
Beiträge: 5
Registriert: Sa, 25.03.2006 20:11

Re:Suchmuster mit "oder"

Beitrag von Guivanni »

Hi,

es gibt sogenannte Regular Expressions die du dafür nutzen kannst. Das was wir hier brauchen ist der Querstrich |

Also in deinem Bsp.:
  • oSuche.SetSearchString("^01|^31")
Desweiteren musst du noch dem Such-/Ersetzen-Deskriptor mitteilen das es sich um eine RegularExpression handelt, dies machst du hierüber:
  • oSuche.SearchRegularExpression = True
Nun aber Achtung
  • Du nutzt in deinem SearchString das Dach vor jedem String, dieses ist jedoch ein Schlüsselzeichen in Regular Expressions. Du solltest es nicht nutzen, außer du verwendest es zur Auswertung.
Dies könnte auch recht nützlich sein, da es ein weiteres kleines Problem gibt. Man kann nicht mehr Nur Ganze Zellen durchsuchen, d.h. es werden auch Substrings deiner Suche gefunden. Wenn du bspw. oSuche.SetSearchString("10|11") suchst, dann selektiert er auch Einträge in Zellen die nicht genau dieser Zahlen(10 od. 11) entsprechen, sondern auch Zahlen wie bspw. 11000, 0010, 1011, usw. Kommt darauf an ob man es gerade so möchte. Wenn nicht ist es äußerst schwierig, genau die Elemente herauszufiltern die exakt dem Suchstring entsprechen.

Wenn man also nur den vollen Suchstring in jeder Zelle selektieren möchte, so kann man es über die folgenden beiden Expressions versuchen.
  • ^ (Dach) steht für einen Zeilenanfang oder einen Zeichenkettenanfang. Mit dem Zeichen ^ am Anfang eines regulären Ausdrucks läßt sich dieser an einem Zeilenanfang verankern.
    Dementsprechend paßt der Ausdruck a auf ein a an beliebiger Stelle in einem Text, der Ausdruck ^a hingegen nur auf ein a am Anfang einer Zeile oder eines Strings.
  • $ (Dollar) steht für ein Zeilenende oder ein Zeichenkettenende. Mit dem Zeichen $ am Ende eines regulären Ausdrucks läßt sich dieser an einem Zeilenende verankern.
    Analog zum Dach paßt der Ausdruck a$ nur auf ein a am Ende einer Zeile oder Zeichenkette.
Siehe auch in der Hilfe von OpenOffice unter dem Schlagwort "Reguläre Ausdrücke" Da stehen auch alle weiteren Schlüsselzeichen. Viel Erfolg!

Gruß Guivanni
Antworten