Link to home
Start Free TrialLog in
Avatar of ViceroyFizzlebottom
ViceroyFizzlebottomFlag for United States of America

asked on

Regular Expression Search/Replace in ASP.NET

Hello and thanks in advance for any assistance.

I have an ASP.NET application that sends emails out. I have a static HTML template with variable identifiers which look like this: %%VariableData%%

When an email gets sent, all the variables in the template are simply replaced using a String.Replace function.

My problem is that using the "%%.*%%' regular expression it will find things like this: %%strSchoolURL%%/Login.aspx?Email=%%strEmailAddress%% as one big variable instead of finding one instance of %%strSchoolURL%% and one instance of %%strEmailAddress%%.

I'm thinking it's just a matter of fine tuning the regular expression.

Any hints would be greatly appreciated.
String valueRegex = @"%%.*%%";
strEmailText = // Read in static .html text
 
// Define a regular expression for repeated words.
Regex rx = new Regex(@"%%.*%%", RegexOptions.Compiled | RegexOptions.IgnoreCase);
 
                if (Regex.IsMatch(strEmailText, valueRegex))
                {
                    // Find matches.
                    MatchCollection matches = rx.Matches(strEmailText);
 
                    foreach (Match match in matches)
                    {
                        GroupCollection groups = match.Groups;
 
                        //replace variables in the email text with values from DB
                        #region Switch Cases
                        switch (groups.SyncRoot.ToString())
                        {
                            case "%%strSchoolContact%%":
                                {
                                    replacementText = ds.Tables[0].Rows[0]["strSchoolContact"].ToString();
                                    strEmailText = strEmailText.Replace("%%strSchoolContact%%", replacementText);
                                    break;
                                }
// etc, etc for every defined variable element
}
}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of ddrudik
ddrudik
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Try this:
%%[^%]*%%
Avatar of ViceroyFizzlebottom

ASKER

*sigh* can't believe I brain cramped on that. Thanks for the quick response.
Thanks for the question and the points.