tag:blogger.com,1999:blog-7085941.post-1106792053609405242005-01-26T18:13:00.000-08:002005-01-26T21:29:20.806-08:00Regular expression in C#It is time consuming to build a regular expression.
<br />I have a text file as below:
<br />
<br />idnameaddressemailfaxpassowrd
<br />example:
<br />000010034981Mr. Ray BabsMontreal Canada Test@glinknet.com5142842903PassWord
<br />
<br />How do I parse it? Note it is possible no value for address, email, fax, or password
<br />
<br />Here is the regular expression I built ( 2 hours work)
<br />
<br />(?<id>\d+)\(?<name>(.[^]+))\(?
<br /><address>()(.[^]+))\(?<email>(.[^]+)())\(?<fax>()(.[^]+))\(?<pdfcode>(.+()))
<br />
<br />It retrives the value to groups defined by "?<group>"
<br />(<span style="color:#ff6666;">? </span><span style="color:#993300;">()</span><span style="color:#990000;"></span><span style="color:#66cccc;">(.[^]+)</span>)
<br />
<br /><strong><span style="color:#ff6666;">Can you find better expression?</span></strong>
<br /></address><div align="left"><address>Regex regx = new Regex( @"(?<id>\d+)\(?<name>(.[^]+))\(? <address>()(.[^]+))\(?<email>(.[^]+)())\(?<fax>()(.[^]+))\(?<pdfcode>(.+()))", RegexOptions.IgnoreCase RegexOptions.Singleline RegexOptions.IgnorePatternWhitespace RegexOptions.Compiled );
<br />Match m = regx.Match( line);
<br />if ( !m.Success) </address><address>{ </address><address>System.Diagnostics.Debug.WriteLine( line, "Import Text Error"); </address><address>continue; </address><address>} </address><address> </address><address>string id = m.Result( "${id}"); </address><address>string name = m.Result( "${name}"); </address><address>string address = m.Result( "${address}"); </address><address>string email = m.Result( "${email}"); </address><address>string fax = m.Result( "${fax}"); </address><address>string pdfcode = m.Result( "${pdfcode}");
<br /></address><address>
<br /> </address></address></div>
<br />Joehttp://www.blogger.com/profile/04618327687649458144noreply@blogger.com