C# 字符串子字符串或reg expr

C# 字符串子字符串或reg expr,c#,.net,regex,string,C#,.net,Regex,String,我在从控制台获取三个参数时遇到问题。 例如,用户输入控制台so行:'/s:/e:device/f:create' string params = Console.ReadLine(); // /s:http://asdasd.asd /e:device /f:create' 我要把那些女的找回来 string server = ""; //should be "http://asdasd.asd" string entity = ""; //should be "device" string

我在从控制台获取三个参数时遇到问题。 例如,用户输入控制台so行:'/s:/e:device/f:create'

string params = Console.ReadLine(); // /s:http://asdasd.asd /e:device /f:create'
我要把那些女的找回来

string server = ""; //should be "http://asdasd.asd"
string entity = ""; //should be "device"
string function = "" //should be "create"
我不明白怎么做。(请帮帮我)

示例控制台

使用以下方法:

`(?<=/s:)[^ ]+`
`(?<=/e:)[^ ]+`
`(?<=/f:)[^ ]+`

`(?有很好的外部util用于解析输入参数。除了编写自己的代码,您还可以使用它们。我知道以下几点:


这对您来说会容易得多。

按空格字符拆分,然后在第一个“:”处拆分。类似于:

string input = "/s:http://asdasd.asd /e:device /f:create";

string[] parameters = input.Split(' ');

foreach (string param in parameters)
{
    string command = "";
    string value = "";

    command = param.Substring(0, param.IndexOf(':'));
    value = param.Substring(param.IndexOf(':') + 1);
}

// Results:
// command: /s value: http://asdasd.asd
// command: /e value: device
// command: /f value: create

可能有库可以帮助您,或者您可以选择正则表达式。但在这种情况下,它不是强制性的。显然,在输入错误的情况下,应该有一些错误处理代码,但我认为您可以自己管理这些代码。

下面是一个正则表达式示例,它可以做到这一点,并根据您的需要进行分组:

/s:([^ ]{1,100}) /e:([^ ]{1,100}) /f:([^ ]{1,100})
另外,我建议使用来学习如何创建这些


编辑:这是一个非常具体的示例,并没有涵盖所有可能的情况。请在上面的网站中测试它,以获得不同的输入,以进行所需的更改。

此过程需要3个不同的正则表达式(至少我找不到通用的正则表达式)。因为
http://
销毁此情况下的所有正则表达式
:)

输出将是

http://asdasd.asd
device
create

下面是一个简单的解决方案。

更简单的解决方案是:

(?<=\:)[^ ]+

(?我会投票支持RegexThank you:)我喜欢正则表达式,但在很多情况下,您可以不使用正则表达式,而最终得到更干净的代码。有些人似乎用它们来解决所有问题,所以我试图说明大多数问题也可以通过简单的字符串操作来解决。
(?<=\:)[^ ]+