| 

.NET C# Java Javascript Exception

2
Hallo,
ich versuche schon seit einiger Zeit einen regulären Ausdruck aus einer Datei zu lesen und in der replace funktion anzuwenden.
Allerdings scheint der reguläre Ausdruck nicht zu funktionieren wenn ich ihn aus einer datei lade.
Diese funktion erstellt aus dem aus der Datei gelesenen String eine RegExp
(funktioniert nur für regex die mit "/" eingeschlossen sind was aber erstmal ausreicht)
public static function getRegex(s:String):RegExp{
var a:String = s.substring(1,s.lastIndexOf("/"));
var b:String = s.substring(s.lastIndexOf("/"));
var regex:RegExp = new RegExp(a, b);
return regex;
}


Diese traces:
trace(/<Private>.*<\/Private>/gs+" "+(/<Private>.*<\/Private>/gs is RegExp));
trace(Plugin.getRegex(action[1])+" "+(Plugin.getRegex(action[1]) is RegExp));
trace(/<Private>.*<\/Private>/gs == Plugin.getRegex(action[1]));


erzeugen diese Ausgabe:
/<Private>.*<\/Private>/gs true
/<Private>.*<\/Private>/gs true
false

Die Ausgabe ist absolut gleich und beide haben den Dateityp RegExp,
wenn man sie aber vergleicht ergibt das false.

content.replace(action[1],"");


funktioniert also leider nicht.

content.replace(/<Private>.*<\/Private>/gs, "");


aber schon.

Nebenbei hatte ich auch noch das Problem die Regulären Ausdrücke mit Rgulären Ausdrücken zu finden. Wie kann man in einem regex escapte Zeichen ignorieren?
Wenn ich zum beispiel /aaa\/bbb/ finden möchte und nicht will dass nur /aaa\/ gefunden wird.
News:
29.04.2011
Pascal 125 6
1 Antwort
1
Du hast keine Gleichheit hast, weil Du zwei unterschiedliche Regex-Instanzen hast, die nur den gleichen Wert haben. Wie bei zwei Strings, die an unterschiedlichen Stellen im Hauptspeicher liegen, aber den gleichen Wert haben.

Der Aufruf muss doch

content.replace(Plugin.getRegex(action[1]), "");


lauten. Du willst doch einen regulären Ausdruck und keinen String übergeben.
01.05.2011
theorist 494 6
Da hast du wohl recht. Sehr blöd von mir. Das lag wohl daran dass ich es als erstes in ein RegEx umgewandelt hatte bevor ich es in das Array geschrieben hab.

Das hat allerdings vermutlich nicht funktioniert:
temp = s.substring(s.indexOf(" ")+1,s.length-1).split(" ");
temp[0] = Plugin.getRegex(temp[0]);
temp[1] = temp[1].substring(1,temp[1].length-1);
da temp[0] schon als String deklariert war.

Also problem behoben. Danke. Muss allerdings nochmal überdenken wie ich das mit dem Datei parsen verbessere aber dazu mach ich vllt nochmal ne andere Frage auf.
Pascal 02.05.2011

Stelle deine Regex-Frage jetzt!