2016-05-21 2 views
1

Angesichts der Ausdruck zurückzukehren:Regex Ausdruck eine führende Zeichenfolge bis zu (aber nicht einschließlich) ein zweites Stand

"C: \ Nova6 \ Nursing_Desk \ bin \ Debug"

Welche regulären Ausdruck Gibt die führende Zeichenfolge bis "Nursing Desk" zurück (aber nicht)? Das heißt ich will:

"C: \ Nova6"

zu zurückgegeben werden.

ich bekomme, dass

/^(.*?)abc/

Wo abc = "Nursing_Desk" das allgemeine Format ist, aber wie abc unterschiedliche Werte für I ersetzen?

Bitte beachten Sie, ich würde gerne in der Lage sein, andere Strings zu "suchen bis zu" in die Regex-Ausdruck. Das heißt, dass sowohl die zu suchende Zeichenfolge als auch die Zeichen, nach denen gesucht werden soll, erst zur Laufzeit bekannt sind. Auch können beide Zeichenfolgen Leerzeichen enthalten.

Visual Studio 2015; .Net 4.6.1; C#

Jede Hilfe wird am meisten geschätzt.

Antwort

1

können Sie diese verwenden, in C#

string pattern = "^(.*?)(?=\\\\" + abc + ")"; 

C# -Code

string abc = "Nursing_Desk"; //<-- You can use any value of abc in here or take it as input from user 
string input = "C:\\Nova6\\Nursing_Desk\bin\\Debug"; 
string pattern = "^(.*?)(?=\\\\" + abc + ")"; //Concatenating the pattern with content of abc 
Regex rgx = new Regex(pattern); 

Match match = rgx.Match(input); 

if (match.Success) { 
     Console.WriteLine(match.Groups[1].Value); 
} 

Ideone Demo

Wenn Sie bei der Suche nach einem beliebigen Zeichenfolge interessiert sind, können Sie

verwenden
string pattern = "^(.*?)(?=" + abc + ")"; 
+0

Danke. Ich starrte die letzten Stunden an. Ihre schnelle Antwort ist hervorragend! –

+0

@AlanWayne froh, es hat dir geholfen – rock321987

Verwandte Themen