Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用正则表达式提取字符串的两个元素_C#_Regex_String - Fatal编程技术网

C#使用正则表达式提取字符串的两个元素

C#使用正则表达式提取字符串的两个元素,c#,regex,string,C#,Regex,String,我从一个POST请求中使用.Split()提取了以下字符串 我需要提取电子邮件(login\u email=)和密码(login\u password=) 总之,我需要得到: my%40mail.de TOPsecret 有没有一个简单的方法,也许不使用正则表达式,或者是编写一个正则表达式以便于学习?我知道提取电子邮件地址的正则表达式应该在login\u email=之后开始,并在&标志处停止。使用如下的环视工具 (?<=login_(?:email|password)=)[^&

我从一个
POST
请求中使用
.Split()
提取了以下字符串

我需要提取电子邮件(
login\u email=
)和密码(
login\u password=

总之,我需要得到:

my%40mail.de

TOPsecret

有没有一个简单的方法,也许不使用正则表达式,或者是编写一个正则表达式以便于学习?我知道提取电子邮件地址的正则表达式应该在
login\u email=
之后开始,并在
&
标志处停止。

使用如下的环视工具

(?<=login_(?:email|password)=)[^&]*(?=&)

String input=@“login\u cmd=&login\u params=&login\u email=my%40mail.de&login\u password=TOPsecret&submit…………”;

Regex rgx=新的Regex(@“(?使用如下的lookaround

(?<=login_(?:email|password)=)[^&]*(?=&)

String input=@“login\u cmd=&login\u params=&login\u email=my%40mail.de&login\u password=TOPsecret&submit…………”;

Regex rgx=new Regex(@“(?
(?
)(?)我想说最简单的方法是不使用Regex,而是使用内置的HttpUtility:

string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("login_email");

简单。

我认为最简单的方法是不使用regex,而是使用内置的HttpUtility:

string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("login_email");

简单。

因此,您在查询字符串中有
TOPsecret
密码,这可能是一个更大的问题。我不理解您的意思。我显示的数据不可用。如果您在服务器请求的上下文中,则对象具有属性(
QueryString
表单
等)这是专门为获取这些信息而设计的。这些都在客户端,而不是服务器上。因此,查询字符串中有
TOPsecret
密码,这可能是一个更大的问题。我不理解您的意思。我显示的数据不可用。如果您在服务器请求的上下文中,则对象具有属性(
查询字符串
表单
等)这是专门为获取这些信息而设计的。这都是在客户端上,而不是服务器上。我们将要编写这篇文章。人们总是想使用Regex,因为不阅读API,他们不知道内置功能是否已经符合所有要求。我们将要编写这篇文章。人们总是想使用Regex,因为ut阅读API时,他们不知道内置功能是否已经符合所有要求。我是RegEx新手,如何在我的示例中使用上面的RegEx?我是RegEx新手,如何在我的示例中使用上面的RegEx?效果很好,有没有办法获取字段类型(用户名或密码),以获得像:username:xxx password:xyz这样的输出效果很好,有没有办法,获得字段类型(username或password),获得像:username:xxx password:xyz这样的输出
String input = @"login_cmd=&login_params=&login_email=my%40mail.de&login_password=TOPsecret&submit..........";

Regex rgx = new Regex(@"(?<=login_email=)([^&]+)|(?<=login_password=)([^&]+)");

foreach (Match m in rgx.Matches(input))
{
    if(!m.Groups[1].Value.ToString().Equals(string.Empty))
    {
        Console.WriteLine("Email : " + m.Groups[1].Value);
    }
        if(!m.Groups[2].Value.ToString().Equals(string.Empty))
    {
        Console.WriteLine("Password : " + m.Groups[2].Value);
    }
}
(?<=login_email=)[^&]+|(?<=login_password=)[^&]+
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("login_email");