Re: Regex Matches
- From: "Bruce Wood" <brucewood@xxxxxxxxxx>
- Date: 24 Nov 2005 16:56:46 -0800
Gabriel Lozano-Morán wrote:
> It would match two times if you put an extra G at index 4 in the matches
> string:
> GGATGGGATG
>
> Gabriel Lozano-Morán
Well, yes, but I think that what the OP wanted to know is why Regex
doesn't re-scan after a match. That is, in the string GGATGGATG, the
Regex will match the initial string: GGATG. After that, where does the
Regex processor look to start matching next? Does it start with the
part of the string after the first matched character, so does it begin
matching the substring GATGGATG, in which case it would find a second
match in the fifth character of the original string (the fourth
character of the substring)? Or does it start looking for another match
after the last character matched in the first match, therefore matching
against GATG, which will result in no second match?
Regex appears to display the latter behaviour, according to the OP.
I checked the RegexOptions enumeration, and don't see any flag for
Rescan. I have seen this option for other Regex pattern matchers, but
it doesn't appear to be in the .NET one.
One thing the OP could do is use Match instead of Matches:
string dna = "GGATGGATG";
int matchIndex = 0;
Regex r = new Regex("GGATG");
Match sequence = r.Match(dna, matchIndex);
while (sequence != Match.Empty)
{
matchIndex = sequence.Index;
Console.WriteLine("Sequence matched at index {0}", matchIndex);
matchIndex++;
sequence = r.Match(dna, matchIndex);
}
Or something like that. Then he could determine where Regex should
start searching again after it finds a match.
.
- Follow-Ups:
- Re: Regex Matches
- From: Bruce Wood
- Re: Regex Matches
- From: Kofi
- Re: Regex Matches
- References:
- Regex Matches
- From: Kofi
- Re: Regex Matches
- From: Gabriel Lozano-Morán
- Regex Matches
- Prev by Date: Re: VS Regex ?
- Next by Date: Re: Send Mail Question
- Previous by thread: Re: Regex Matches
- Next by thread: Re: Regex Matches
- Index(es):
Relevant Pages
|