从文本文件中提取某些信息

时间:2014-07-06 01:33:52

标签: c# text

所以我的文本文件只是一个充满电子邮件和密码的文件,我的个人帐户(用于存储用户名和密码的程序)文本文件的格式很奇怪,如:

"login=Amazon&password=MYPASS&r&email=myemail@gmail.com"

我如何从中提取密码和电子邮件?

我如何创建一个循环来抓取它们中的电子邮件,然后是相应的密码 - 就像输出文本文件一样?我正在假设正则表达式,我很可怕,是的。感谢任何帮助,谢谢你们。

我真的不知道,但我至少尝试过:

string source = File.ReadAllText("FilePathHere");
string password = "password=";
foreach(password in source){
//Something with Regex Matching? Like...
if(Regex.isMatch(password, source)){

{
} 

就像我说的,我不知道如何做到这一点,我知道尽管做出某种尝试是件好事。

2 个答案:

答案 0 :(得分:0)

本网站非常适合开发您的重复表达式:http://regexhero.net/

这是一种可以让你想要提取的内容的方法。

       var input =
            @"login=Amazon&password=MYPASS&r&email=myemail@gmail.comlogin=Amazon&password=MYPASS&r&email=myemail@gmail.com";

        var pattern = @"login=(?<login>.*?)&password=(?<password>.*?)&r&email=(?<email>.*?)(?:(?=login)|$|\s)";

        foreach (Match match in System.Text.RegularExpressions.Regex.Matches(input, pattern))
        {
            var login = match.Groups["login"].Value;
            var password = match.Groups["password"].Value;
            var email = match.Groups["email"].Value;
            // Write your code here to do something with the values
        }

我将解释表达式的最后部分是如何工作的。 (:(=登录)| $ | \ s?)。基本上,电子邮件将包含每个字符,直到“登录”,行结束或找到空格为止。白色空间仅用于测试,可以删除。

答案 1 :(得分:0)

您可以接下来执行此操作(使用2个字符串作为示例):

string source = "login=Amazon&password=MYPASS&r&email=myemail@gmail.com";
string secondsource = @"login=Amazon&password=MYPASS&r&email=myemail@gmail.comlogin=Amazon&password=MYPASS123&r&email=myemail@gmail.com";

string result = Regex.Match(source, @"(?<=password=)[a-zA-Z\\.\\r\\n0-9]*(?=&)").Value;
MatchCollection result2 = Regex.Matches(secondsource, @"(?<=password=)[a-zA-Z\\.\\r\\n0-9]*(?=&)");