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

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -