2017-01-09 4 views
0

Ich möchte den Wert einer bestimmten Variablen in einer Textdatei extrahieren, die ich mit Code analysiere. Der Variablenname ändert sich ebenso wie seine Position im Code, aber ich kenne das Muster, daher erhalte ich erfolgreich seinen Wert und speichere ihn in einer Variablen namens myVar.Java-Regex für den Variablenwert

Um den Wert, dh die Zeichenfolge zwischen Anführungszeichen nach dem meineVar zu bekommen und Gleichheitszeichen, das heißt myVar = "value i want is here" Ich dachte über Regex wie folgt:

Pattern q = Pattern.compile(myVar + "\= \"(.*)\""); 

Aber ich erhalte eine Fehlermeldung beim Kompilieren:

error: illegal escape character Pattern q = Pattern.compile(myVar + "\= \"(.*)\"");

Ist dies etwas mit der Verkettung der myVar-Zeichenfolge mit dem regulären Ausdruck?

+0

Was ist in der Variablen 'myVar' zur Laufzeit? – Asaph

+0

@Assaph ein String der Form 'Variablenname [2]' –

Antwort

2

\= ist keine Escape-Sequenz. Sie müssen wahrscheinlich die Regex-Zeichenfolge für Java umgehen. Hier ist ein Link für das zu tun: http://www.freeformatter.com/java-dotnet-escape.html

Escape Sequences 
\t Insert a tab in the text at this point. 
\b Insert a backspace in the text at this point. 
\n Insert a newline in the text at this point. 
\r Insert a carriage return in the text at this point. 
\f Insert a formfeed in the text at this point. 
\' Insert a single quote character in the text at this point. 
\" Insert a double quote character in the text at this point. 
\\ Insert a backslash character in the text at this point. 

Von http://docs.oracle.com/javase/tutorial/java/data/characters.html

+1

@ Xlsx ist richtig. Ändern Sie '\ =' entweder zu '=' oder '\\ =' (wenn Sie * wirklich * den führenden umgekehrten Schrägstrich dort haben wollen, obwohl es keinen Sinn hat, es zu haben). – Asaph

+0

Das Problem mit '\ =' ist überhaupt kein Regex-Problem. '\ =' ist in einer Java-Zeichenfolge nicht gültig. Es kommt noch nicht einmal so weit wie das Kompilieren der Regex, weil der Java-Code nicht einmal kompiliert. – Asaph

+0

ok, entfernte den Backslash und es kompiliert, aber gibt keinen Wert in der Gruppe zurück, muss also irgendwo ein anderes Problem haben. Vielen Dank. Ich werde weiter nachsehen. –

Verwandte Themen