# Frage zu Regex



## Fredi84 (17. Aug 2012)

Hallo,

ich weiss nicht ob ich bei euch richtig bin aber ich versuche es mal. Ich möchte in *Java-Script* über eine Regex einen String prüfen.

Folgendes funktioniert:

var projectPattern2=/^\\BU\\/

var re= new RegExp(projectPattern2);
if( newproject.match(re))

Aber wenn ich den Pattern aus einem property file auslese funktioniert das ganze nicht mehr.
	var re= new RegExp(properties.getProperty("projectPattern"));

       if( newproject.match(re))
       {

ICh glaube es liegt am ^ hab ihr eine Lösung für mein Problem vielen Dank im Voraus.

Gruß


----------



## Templarthelast (17. Aug 2012)

Du bist möglicherweise 36 und kannst nicht zwischen Java und Javascript unterscheiden?

Zum Thema_ es ist egal was du mit dem Regex machst, dieser und dessen Funktion bleibt immer die selbe. An deiner Stelle würde ich mir mal den String ausgeben lassen, bevor du ihn mit Regex durchläufst, bzw. den String direkt in das Programm eingeben und dann durchlaufen lassen.


----------



## XHelp (17. Aug 2012)

@Templarthelast, RegEx an sich schon, aber die die Syntax der jeweiligen Programmiersprache
@TO, versuch es über 
	
	
	
	





```
new RegExp...
```


----------



## faetzminator (17. Aug 2012)

Gut möglich, dass die Properties noch eigene Escapesequenzen besitzen. Insofern wärs erst mal interessant, was denn [c]properties.getProperty("projectPattern")[/c] zurück gibt. Ein weiterer Fehler könnten die // sein, da ein Regex sowohl /foobar/ als auch 'foobar' (als String) definierbar ist. Probier dann einfach mal [c]^\\BU\\[/c].


----------



## Fredi84 (17. Aug 2012)

faetzminator hat gesagt.:


> Gut möglich, dass die Properties noch eigene Escapesequenzen besitzen. Insofern wärs erst mal interessant, was denn [c]properties.getProperty("projectPattern")[/c] zurück gibt. Ein weiterer Fehler könnten die // sein, da ein Regex sowohl /foobar/ als auch 'foobar' (als String) definierbar ist. Probier dann einfach mal [c]^\\BU\\[/c].



Hi vielen Dank für deine Antwort ^\\BU\\ nimmt er nicht dann bekomme ich folgende Meldung

Error: Trailing \ in regular expression.

Wenn ich folgendes probier ^\\\BU\\\ und mit den Wert der Variablen ausgebe bekomme ich 

^\BU\


----------



## Fredi84 (17. Aug 2012)

Fredi84 hat gesagt.:


> Hi vielen Dank für deine Antwort ^\\BU\\ nimmt er nicht dann bekomme ich folgende Meldung
> 
> Error: Trailing \ in regular expression.
> 
> ...


 funktioniert aber auch nicht


----------



## Templarthelast (17. Aug 2012)

Wie sieht denn dein String aus, denn du über die properties einließt?

Funktioniert es, wenn du ihn direkt als String mit dem Regex verarbeitest?


----------



## Fredi84 (17. Aug 2012)

Hi also direkt im code hinterlegt funktioniert das ganze folgender Auszug:

var projectPattern2=/^\\BU\\/

var re= new RegExp(projectPattern2);
if( newproject.match(re))

In den properties file hab ich folgendes versucht:

/^\\BU\\/
^\BU\
^\\\BU\\\

Leider ohne Erfolg siehe erster post


----------



## Fredi84 (17. Aug 2012)

Folgendes geht ^\\\\BU\\\\ kann mir einer erklären warum?

Vielen Dank im Voraus


----------



## nillehammer (17. Aug 2012)

In properties-Dateien hat der der einfache Backslash "\" eine Sonderbedeutung. Wenn man ein sehr langes Property-Value hat, das über den Bildschirmrand hinaus geht, kann man diesen value der Übersichtlichkeit halber auf mehrere Zeilen splitten. Mit dem \ am Ende jeder Zeile wird daraus eine Gesamtzeile. Man muss den "\" also escapen, wenn man ihn an den Client weiterleiten will. Um dieses Zeichen zu escapen, musst man "\\" ins Property-File schreiben. Auf diese Weise kommt der einfache "\" beim Client an. Wenn Du also zwei davon brauchst, wird daraus im Properties-File "\\\\".
[EDIT]
Man, nicht gerade eine meiner besten Formulierungen :autsch:. Hoffe aber, dass es trotzdem verständlich ist...
[/EDIT]


----------

