Posts

Showing posts with the label regex

C# string parameter replacement with simple date arithmetic

[Test] public void FindAndReplace() { var sql = @" SELECT * FROM Table_{@AsOf} WHERE Date='{@AsOf-1}' "; Console.WriteLine(" BEFORE: {0} ", sql); var asOf = DateTime.Today; //(?: )+ means repeat the inner groups var regexExpr = @" (?:{@(?<parameter>\w+)(?<operation>\S)?(?<number>\d+)?})+ "; var regex = new Regex(regexExpr); foreach (Match match in regex.Matches(sql)) { sql = sql.Replace(match.Value, Substitute(match.Value, asOf)); } Console.WriteLine(" AFTER : {0} ", sql); } private string Substitute( string parameterText, DateTime asOf) { var regexExpr = @" {@(?<parameter>\w+)(?<operation>\S)?(?<number>\d+)?} "; var regex = new Regex(regexExpr); var match = regex.Match(parameterText); if (match.Success) { var parameter = match.Groups[" parameter "].Value; if (match.Groups[" operation "].Success &...

C# Regex replace

[Test] public void TestRegexReplace() { //replace A or B with X after \Date\ var pattern = @" \b(?<=\\Date\\)(A|B)\b "; Assert.AreEqual( @" c:\temp\Date\X\SubFolder\ ", Regex.Replace(@" c:\temp\Date\A\SubFolder\ ", pattern, m => " X ")); Assert.AreEqual( @" c:\temp\Date\X\SubFolder\ ", Regex.Replace(@" c:\temp\Date\B\SubFolder\ ", pattern, m => " X ")); Assert.AreEqual( @" c:\temp\Date\C\SubFolder\ ", Regex.Replace( @" c:\temp\Date\C\SubFolder\ ", pattern, m => " X ")); //or the simple way :) pattern = @" \\Date\\[AB]\\ "; Assert.AreEqual( @" c:\temp\Date\X\SubFolder\ ", Regex.Replace(@" c:\temp\Date\A\SubFolder\ ", pattern, m => @" \Date\X\ ")); Assert.AreEqual( @" c:\temp\Date\X\SubFolder\ ", Regex.Replace(@" c:\temp\Date\B\SubFolder\ ", pattern, m => @...