Here is the data source, lines stored in a txt file:
servers[i]=["name1", type1, location3];
servers[i]=["name2", type2, location3];
servers[i]=["name3", type1, location7];
Here is my code:
string servers = File.ReadAllText("servers.txt");
string pattern = "^servers[i]=[\"(?<name>.*)\", (.*), (?<location>.*)];$";
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match m;
for (m = reg.Match(servers); m.Success; m = m.NextMatch()) {
string name = m.Groups["name"].Value;
string location = m.Groups["location"].Value;
}
No lines are matching. What am I doing wrong?
I don’t know if C# regex’s are the same as perl, but if so, you probably want to escape the
[and]characters.Also, there are extra characters in there.Try this:Edited to add: After wondering why my answer was downvoted and then looking at Val’s answer, I realized that the “extra characters” were there for a reason. They are what perl calls “named capture buffers”, which I have never used but the original code fragment does. I have updated my answer to include them.