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

C# 正则表达式中的字符串部分,c#,regex,split,C#,Regex,Split,如何使用正则表达式剪切字符串的粗体部分 wmq://aster-C1.it.google.netEO_B2:1427/QM.0021?queue=SOMEQueue?您可以使用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 = Pat

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


wmq://aster-C1.it.google.netEO_B2:1427/QM.0021?queue=SOMEQueue

您可以使用
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"];

这应该让你开始:

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);
但是,您可能需要对url进行一些更改

网上有适当的教程来解释正则表达式,但这里有一些快速信息:

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

您使用的是什么正则表达式工具/语言?您尝试了什么?您尝试了什么?你说15个字符是什么意思?我必须写至少15个字符,换句话说,评论不会保存。我不知道如何从(wmq://)开始,在“@”之后开始。我没有这个方法,这是silverlight 5应用程序:(@user3763161,这无关紧要;你应该仍然可以访问System.Uri。