正则表达式中的字符串部分

时间:2014-10-09 12:31:26

标签: c# regex split

如何用正则表达式剪切字符串的粗体部分?

WMQ:// aster-C1.it.google.net @的 EO_B2 1427 / QM.0021 ?队列= SOMEQueue

2 个答案:

答案 0 :(得分:0)

您可以使用Uri

var uri = new Uri(@"wmq://aster-C1.it.google.net@EO_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"];

答案 1 :(得分:0)

这应该让你开始:

var myUrl     = "wmq://aster-C1.it.google.net@EO_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);

但您可能需要更改网址中的变化。

网上有适当的教程来解释Regex,但这里有一些快速信息:

  • @在C#中的字符串“”之前避免了逃避黑色斜杠的需要。
  • (括号)是捕获组,因此“()()”成为组[1]组[2]。
  • 。*?意味着匹配任何东西,但做一个不合适的最小匹配。
  • \?反斜杠说匹配问号而不是特殊字符。