2014-10-09 59 views
-4

如何用正則表達式切割字符串的粗體部分?正則表達式中的字符串部分

WMQ:// aster-C1.it.google.net @EO_B2:/QM.0021隊列= SOMEQueue

+4

你使用什麼正則表達式工具/語言,你試過了什麼? – anubhava 2014-10-09 12:32:01

+0

你試過了什麼? 15字是什麼意思? – 2014-10-09 12:37:55

+0

我必須寫最少15個字符,用另一種方式註釋不會保存。 我不知道如何從(wmq://)開始以及在「@」之後。 – czupikawo 2014-10-09 12:40:03

回答

0

這應該讓你開始:

var myUrl  = "wmq://[email protected]_B2:1427/QM.0021?queue=SOMEQueue?"; 
var myRegex = new Regex(@"wmq://(.*?)@(.*?)\?queue=(.*?)\?"); 
var myMatches = myRegex.Match(myUrl); 

Debug.Print(myMatches.Groups[1].Value); 
Debug.Print(myMatches.Groups[2].Value); 
Debug.Print(myMatches.Groups[3].Value); 

但是你可能需要改變它有點URL中的變化。

有在網絡上適當的輔導講解正則表達式,但這裏是一些快速的信息:

  • @前面的字符串「」在C#中避免了需要躲避blackslashes。
  • (括號)是捕獲組,所以「()()」變成組[1]組[2]。
  • 。*?意味着匹配任何東西,但做一個不合理的最小匹配。
  • \?反斜槓表示匹配問號而不是特殊字符。
0

你可以使用一個Uri

var uri = new Uri(@"wmq://[email protected]_B2:1427/QM.0021?queue=SOMEQueue?"); 

var a = uri.UserInfo; 
var b = uri.Host; 
var c = uri.Port; 
var d = Path.GetFileName(uri.AbsolutePath); 
var e = HttpUtility.ParseQueryString(uri.Query)["queue"]; 
+0

我沒有這種方法,這是silverlight 5應用程序:( – czupikawo 2014-10-09 12:47:09

+0

@ user3763161這是無關緊要的;你仍然應該訪問System.Uri。 – Casey 2014-10-09 13:11:10