c# - Regex to match dates -
i have html input have 3 patterns this:
pattern one
</div> <div class="myclass">
pattern two
</div> <p class="productmeta">29-06-2011</p> <div class="myclass">
pattern trhee
</div> <p class="productmeta">29/06/2011</p> <div class="myclass">
i'm trying create regex can catch tree dates: empty, dashes , slashes. think need kind of nested groups, can't make work.
this regex i've created:
regex r = new regex( @"src=""</div>\s+<p class=""productmeta"">([\d\/\-]+)" , regexoptions.compiled | regexoptions.ignorecase);
and tried following make group optional:
regex r = new regex( @"src=""</div>[\s+<p class=""productmeta"">([\d\/\-]+)]?" , regexoptions.compiled | regexoptions.ignorecase);
can me?
the console test following print on screen:
foreach (match m in mcl) { console.writeline(m.groups[1].value.replace("-","/") + " - " + m.groups[5].value); } console.read();
thanks.
you can't make []
's optional group. ()
can optional.
var test1 = @"</div> <div class=""myclass"">"; var test2 = @"</div> <p class=""productmeta"">29-06-2011</p> <div class=""myclass"">"; var test3 = @"</div> <p class=""productmeta"">29/06/2011</p> <div class=""myclass"">"; string re = @"</div>\s+(<p class=""productmeta"">(\d\d([-/])\d\d\3\d\d\d\d))?"; regex regexpr = new regex(re, regexoptions.multiline); console.writeline(regexpr.match(test1).groups[2].value); //== "" console.writeline(regexpr.match(test2).groups[2].value); //== "29-06-2011" console.writeline(regexpr.match(test3).groups[2].value); //== "29/06/2011"
Comments
Post a Comment