[英]C# extract two elements of a string using a RegEx
我有以下字符串,是使用.Split()
从POST
请求中提取的。
我需要提取电子邮件( login_email=
)和密码( login_password=
)。
login_cmd=&login_params=&login_email=my%40mail.de&login_password=TOPsecret&submit..........
总而言之,我需要获得:
my%40mail.de
TOPsecret
是否有一种简单的方法,也许不使用RegEx,还是正在编写一个易于学习的RegEx? 我知道用于提取电子邮件地址的RegEx应该在login_email=
之后开始,并在&
符号处停止。
我会说最简单的是不使用正则表达式,而使用内置的HttpUtility:
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("login_email");
简单。
使用类似下面的外观。
(?<=login_(?:email|password)=)[^&]*(?=&)
要么
(?<=login_(?:email|password)=)[^&]*
照看login_email =或login_password并匹配任何字符,但不匹配&
零次或多次。
String input = @"login_cmd=&login_params=&login_email=my%40mail.de&login_password=TOPsecret&submit..........";
Regex rgx = new Regex(@"(?<=login_(?:email|password)=)[^&]*");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.