Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / C# / August 2007

Tip: Looking for answers? Try searching our database.

more regex question how to avoid capturing leading empty lines

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
GS - 09 Aug 2007 16:47 GMT
How can one avoid capturing leading empty or blank lines?

the data  I deal with look like this

"will be paid on the dates you specified.

xyz supplier [123445797891]
 amount: $100.52   when: September 07, 2007   reference #: 0415
 from: operating account [236424735]

abc, Jane'S CHOICE [0089456881545]
 amount: $487.61   when: September 08, 2007   reference #: 0416
 from: finess [0236454514]

"
regexoptions are:
multi-line,explict capture, ignorecase, dotall, ignore pattern white space

regex expression used for capturing
(?<AcctName>^\w*,{0,1}(\s\w*('s){0,1},{0,1})*)\s\[(?<AcctNbr>\d*)\].{4,8}amo
unt:\s\$(?<Amt>\b[0-9][0-9,]*\.\d\d)\s*when:\s*(?<Dt2Pay>[ADFJMNOS][aceopu][
bcglnprtvy][ya-v]{0,9}\s\d{1,2},\s\d\d\d\d\b)\s*reference\s*\#\:\s*(?<RefNbr
>\d*)\s*.{2,4}\s*from:\s(?<FromAcctName>\w{1,}(\s\w*)*)\s\[(?<FromAcctNbr>\d
*)\]

the exrpession used in Result(strGrps)
${AcctName} ${Amt} ${Dt2Pay} ${RefNbr} PCF ${FromAcctName} ${FromAcctNbr}
Result is
"
xyz supplier 100.52 September 07, 2007 0415 PCF operating account 236424735

abc, PRESIDENT'S CHOICE 487.61 September 08, 2007 0416 PCF finess
0236454514"
However desired result are lines with columns tab delimited and without
extra leading lines:
"xyz supplier 100.52 September 07, 2007 0415 PCF operating account 236424735
abc, PRESIDENT'S CHOICE 487.61 September 08, 2007 0416 PCF finess
0236454514"

what do I have to adjust in the regex expresiion?

or Do I have to change the codes used?:

           // compile
           string strRegex = textBoxRegex.Text;
           bool bCompiled = false;
           bool bCompiled = false;

           try
           {

       RegexOptions regexOptn = RegexOptions.Singleline
|RegexOptions.Multiline | RegexOptions.IgnoreCase |
RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace
               myRegex = new Regex(strRegex, regexOptn);  // try compile
with options
               bCompiled = true;
               bMatched = false;
               setStatusText("Regex Compiled.");
           }
           catch (Exception ex)
           {
               setMsg("Error in regex compilation or combination of regex
options. " + ex.Message);

           }

// match

   MatchCollection myMatch = null;
   if (bCompiled ) {
               myMatch = myRegex.Matches(textBoxInput.Text);
   }
// capturing result
   if (myMatch.Count > 0) {
           string strMatchGrpVarName = textBoxGroupName.Text.Replace(",", "
");
           int i  = 0;
           bool bSuccess = false;

           if (myMatch.Count <= 0 ) { setStatusText("No match Found");
return bSuccess;  }
           string mybuf = "";

           //int iCapBeg = myMatch.Captures.
           foreach (Match match in myMatch)
           {
               i++;
               if (i == 1) {
                   mybuf = match.Result(strMatchGrpVarName);
                   if (bSingle) break;
               } else {
                   string strResult = "";
                   mybuf += csCrLf + match.Result(strMatchGrpVarName);
               }
               match.NextMatch();
               if (bSingle) break;
           }
           MessageBox.Show("count=" + strMatchGrpName.Length + csCrLf +
mybuf);
}

thank you for your time and expertise
Kevin Spencer - 10 Aug 2007 13:35 GMT
If you use the caret (^) character with RegexOptions.MultiLine, it will
match at the beginning of a line. You can use that in your individual
matches to specify the start of a line before the match.

Signature

HTH,

Kevin Spencer
Microsoft MVP

DSI PrintManager, Miradyne Component Libraries:
http://www.miradyne.net

> How can one avoid capturing leading empty or blank lines?
>
[quoted text clipped - 102 lines]
>
> thank you for your time and expertise
GS - 11 Aug 2007 04:11 GMT
thank you . I tried
but I still get the extra empty or blank line

^(?<AcctName>^\w*,{0,1}(\s\w*('s){0,1},{0,1})*)\s(?:\[)(?<AcctNbr>\d*)\].{4,
8}^\s*(?:amount):\s\$(?<Amt>\b[0-9][0-9,]*\.\d\d)\s*when:\s*(?<Dt2Pay>[ADFJM
NOS][aceopu][bcglnprtvy][ya-v]{0,9}\s\d{1,2},\s\d\d\d\d\b)\s*reference\s*\#\
:\s*(?<RefNbr>\d*)\s*.{2,4}^\s*(?:from\:\s)(?<FromAcctName>\w{1,}(\s\w*)*)\s
\[(?<FromAcctNbr>\d*)\]

Right now I kluge by allowing user the option of removing all empty and
blank lines. when user check the Remove Blank Line check box, the
application will perform one more match result to remove any blank/empty
lines.  It is klugy and crude and works

> If you use the caret (^) character with RegexOptions.MultiLine, it will
> match at the beginning of a line. You can use that in your individual
[quoted text clipped - 19 lines]
> >
> > regex expression used for capturing

(?<AcctName>^\w*,{0,1}(\s\w*('s){0,1},{0,1})*)\s\[(?<AcctNbr>\d*)\].{4,8}amo

unt:\s\$(?<Amt>\b[0-9][0-9,]*\.\d\d)\s*when:\s*(?<Dt2Pay>[ADFJMNOS][aceopu][

bcglnprtvy][ya-v]{0,9}\s\d{1,2},\s\d\d\d\d\b)\s*reference\s*\#\:\s*(?<RefNbr

>>\d*)\s*.{2,4}\s*from:\s(?<FromAcctName>\w{1,}(\s\w*)*)\s\[(?<FromAcctNbr>\d
> > *)\]
[quoted text clipped - 80 lines]
> >
> > thank you for your time and expertise

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.