Re: Return Data Regex Doesn't Isolate - Yikes

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Justin Rogers (Justin_at_games4dotnet.com)
Date: 04/11/04


Date: Sun, 11 Apr 2004 15:03:50 -0700

I had some rather large explanation of how to do it procedurally, but then I
thought,
"Justin, get off your arse and write some regular expression magic!". So here
you go.

using System;
using System.Text.RegularExpressions;

public class SuperRegex {
private static string stuff =
@"00000000000000000000
200~11111111111111111
22222222222222222222222222222
3333333333333
200~444444444444444444444444
555555555555555555555555555555555
66666666
200~777777777777777777
888888888888";

    private static void Main(string[] args) {
        Regex regex = new Regex("(?ms)(?:\\A|^200~)(.*?)(?=^200~|\\Z)");
        MatchCollection matches = regex.Matches(stuff);
        for(int i = 0; i < matches.Count; i++) {
            Console.WriteLine();
            Console.WriteLine(matches[i].Value);
            Console.WriteLine();
        }
    }
}

-- 
Justin Rogers
DigiTec Web Consultants, LLC.
Blog: http://weblogs.asp.net/justin_rogers
"Garibaldi" <ty_92648 AT hotmail.com> wrote in message
news:%238ChU$9HEHA.3144@TK2MSFTNGP10.phx.gbl...
> Folks,
>
> I'm having a bad regex day and can sure use your help, please..
>
> I have a Regex expression that works fine. It's purpose is to isolate all
> data from the start of a string begining with 200~ to the end of the string
> but before the start of the next 200~. Here's the regex expression and test
> data:
>
> (?ms)^200~(.*?)(?=^200~)
>
> Here's some test data
>
> 00000000000000000000
> 200~11111111111111111
> 22222222222222222222222222222
> 3333333333333
> 200~444444444444444444444444
> 555555555555555555555555555555555
> 66666666
> 200~777777777777777777
> 888888888888
>
> The regex will return 200~ plus all ones, twos, threes as a group then 200~
> plus all fours, fives, sixes as a group
>
> Problem
> ---------
> Now I need to do the reverse. I need to return all the data the preceding
> regex doesn't return. IOW, I need to return all the zeros and 200~ plus all
> the sevens and all the eights as a group. I want to execute "NOT
> (?ms)^200~(.*?)(?=^200~)"
>
> Sure could use a pointer to the correct starting point or any suggestion
> that will help me reach my goal.
>
> Thanks in advance
>
> ty_92648 AT hotmail.com
>
>


Relevant Pages

  • Re: Return Data Regex Doesnt Isolate - Yikes
    ... string as the replacement if you didn't need to access any of the match ... > I'm having a bad regex day and can sure use your help, ... > Here's some test data ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: regex query
    ... Justin C wrote: ... The regex is: ... It finds the pattern by inspecting the surroundings ... but without matching to them. ...
    (uk.comp.os.linux)
  • regex query
    ... I've been given a regex that matches white space between the last \w on ... Justin C, by the sea. ...
    (uk.comp.os.linux)
  • Re: Fastest way to search a string for the occurance of a word??
    ... but the OP's question was what's the "Fastest way to search a string ... in all the tests I did here, the Regex was by far superior. ... However, of course, if you've got new regular expressions all ... Sure - but just that extra Match object could be relevant if the search ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: regular expression help
    ... Basically because if you remove everything that is optional in the regex below you end up with an empty regex: ... So the regex engine will try to match on every character in the string: ... , comma doesn't match, but the nothingness in front of it does. ... A quote followed by any sequence of characters that is not a quote, ...
    (microsoft.public.dotnet.framework)