2012-04-12 11 views
0

Ich habe URL wie:Regex ein Fragment der URL übereinstimmen

http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1 source = dddd

oder

http://127.0.0.1:81/controller/verbTwo/NXw4fDF8MXwxfDQ1

Ich möchte extrahiere diesen Teil fett. Der Host und der Port können zu irgendetwas wechseln (wenn ich es auf einem Live-Server veröffentliche, wird es sich ändern). Der Controller ändert sich nie. Und für den Verbteil gibt es 2 Möglichkeiten.

Kann mir jemand mit der Regex helfen?

Dank

+0

PS: Ich benutze C# .NET. – user1005796

Antwort

3

Statt mit einem regex Sie die integrierten Funktionen von Uri

Uri uri = new Uri("http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1?source=dddd"); 

var lastSegment = uri.Segments.Last(); 
+0

@ L.B Es scheint, als ob er sagte, er wolle den Teil in Fettdruck extrahieren - 'verbOne' und' verbTwo' sind nicht fett gedruckt, oder? (Es gibt nur zwei Möglichkeiten, was sie sein könnten) –

0

Sie suchen die Uri und Path Klassen:

Path.GetFileName(new Uri(str).AbsolutePath) 
0

Warum verwenden könnte suchst du eine Regex? Sie können nach den zwei String-Elementen "verbOne /" oder "verbTwo /" suchen und vom Ende eine Teilzeichenfolge erstellen. Und dann kannst du nach dem Rest suchen und den Teil mit dem '?'

Ich denke, das ist schneller als eine Regex.

Krikit

0

Obwohl jeder hier sonst richtig ist, dass regex nicht die beste Lösung ist, weil es nicht konnte, wenn Parser existieren bereits, dass niemals aufgrund ihrer Spezialisierung nicht, ich glaube, Sie die folgende regex verwenden könnte :

(?<=http://127\.0\.0\.1:81/controller/verb(One|Two)/)[a-zA-Z0-9]* 
Verwandte Themen