dyn. Regex Problem

  • Themenstarter Themenstarter gast2
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

gast2

Gast
Hallo,

ich stehe etwas auf dem Schlauch was die erstellung eines dynamischen Regex angeht:

ich habe eine ArrayList mit Strings...sagen wir (Buch, Zeitung, Pizza Flyer). Diese Liste wird normaler weise zur Laufzeit erstellt und ich weiß nicht was für Worte drin stehen.

ich möchte mir jetzt nen Regex bauen der alles finded was auf "Siehe ArrayList.get(i)" zu trifft...aber irgendwie krieg ich das nicht hin...

Mein Ansatz war folgender:



Code:
String StartREGEXP="(([Ss][Ii][Ee][Hh][Ee][\\s])";

String EndeREGEXP=")";

//DummyList anlegen
ArrayList list = new ArrayList();
ist.add("Buch");
ist.add("Zeitung);
ist.add("Pizza Flyer");
		
StringBuffer buff = new StringBuffer();
//Liste durchlaufen:
if(list!=null && list.size()!=0){
	buff.append(StartREGEXP);
	buff.append("(");
	for(int i=0; i<list.size();i++){                                   <-- Aufbau des Regex in der Schleife funzt nicht so richtig

	   //Kontrollroutine -> Sonderzeichen escapen...
 	   String tmp = RessortList.get(i).toString();
	   //tmp=tmp.replaceAll("\\s", "\\\\s");                          <-- krieg ich nicht hin (für "Pizza Flyer" z.B)
	   list.set(i,tmp);
		
	   buff.append("(");
	   buff.append(list.get(i));
	   buff.append(")");
	   if(i!=list.size()-1)
        {
	    buff.append("||");
        }
   }
    buff.append(")");
    buff.append(EndeREGEXP);
}

Mein Problem ist jetzt zum ersten: wie muß ein solcher REgEx aussehen? D.h. wie bringe ich meine 3 Begriffe da richtig rein und zweitens ich kriegs nich hin die Sonderzeichen wie "Leerzeichen" so umzuwandeln, das es Regex-konform ist.

Könnt ihr mir da etwas helfen?
Danke.

gast2
 
was ist denn daran dynamisch? du brauchst einmal einen RegEx für den Ausdruck "Siehe ArrayList.get(i)"
und was noch? wozu eine Schleife?

wenn die Elemente "Buch, Zeitung, Pizza Flyer" heißen, welche davon sollen denn jemals gleich "Siehe ArrayList.get(i)" sein?

> wie bringe ich meine 3 Begriffe da richtig rein

welche drei Begriffe?

> die Sonderzeichen wie "Leerzeichen" so umzuwandeln, das es Regex-konform ist.

warum umwandeln und nicht einfach so lassen?
welche konkreten Erfahrungen lassen dich ein solches Problem vermuten?

> StartREGEXP="(([Ss][Ii][Ee][Hh][Ee][\\s])";

hat das einen Sinn den du noch erklären willst?

--------

willst du einen ReqEx bauen, der die Elemente "Buch, Zeitung, Pizza Flyer" sucht?
das wäre ja eine ganz neue Info,

schreib doch mal ein fertiges Beispiel bzw ein Szenario,
welcher String durchsucht wird und was darin gefunden werden soll
 
Hi,

@Slater: wenn du dir mal den Code etwas angesehen hättest, dann hättest du gesehen was daran dynamisch ist, aber was reg ich mich auf...ist ja immer das selbe bei dir...Hauptsache du hast geantwortet und einen Punkt mehr in deiner Statistik.

Falls es sonst wen interessiert...das obige Skript zum erstellen eines dynamischen Regex funktioniert. Der einzige Fehler war, das ich den OR-Operator "||" statt richtiger Weise "|" verwendet hatte...


Gruß,
gast2
 
*SlaterB im letzten Satz voll und ganz zustimm*

So wirklich deutlich ist das Problem für "nicht eingeweihte" nicht.

- Alex
 
Ich wollte nichts weiter als einen einzigen String erstellen, der später als Regex dienen soll. Dieser Regex sollte in sofern flexibel sein, als dass er in einem beliebigen (SlaterB ncihtsangehenden) Text sachen wie:

Sieht Pizza Flyer

SIEHE Buch

SiEhE Zeitung

etc.

in allen möglichen Kombinationen finden soll. Buch, Zeitung und Pizza Flyer waren 3 Beispielbegriffe die in einer ArrayList stehen, die später beliebige Ausdrücke beinhalten kann. Der Regex soll aber durch OR-Verknüpfung alles mögliche finden...

Ich denke mit ein wenig gehirnschmalz war das rauslesbar...

do far...

Gruß,
gast2
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben