title: c# regular expression match at specific index in string?
body: <p>I'd like to test if a regex will match part of a string at a specific index (and only starting at that specific index).  For example, given the string "one two 3 4 five", I'd like to know that, at index 8, the regular expression [0-9]+ will match "3".  RegularExpression.IsMatch and Match both take a starting index, however they both will search the entire rest of the string for a match if necessary.</p>
  
  <pre><code>string text="one two 3 4 five";
  Regex num=new Regex("[0-9]+");
  
  //unfortunately num.IsMatch(text,0) also finds a match and returns true
  Console.WriteLine("{0} {1}",num.IsMatch(text, 8),num.IsMatch(text,0));
  </code></pre>
  
  <p>Obviously, I could check if the resulting match starts at the index I am interested in, but I will be doing this a large number of times on large strings, so I don't want to waste time searching for matches later on in the string.  Also, I won't know in advance what regular expressions I will actually be testing against the string.</p>
  
  <p>I don't want to:</p>
  
  <ol>
  <li>split the string on some boundary
  like whitespace because in my
  situation I won't know in advance
  what a suitable boundary would be </li>
  <li>have to modify the input string in
  any way (like getting the substring
  at index 8 and then using ^ in the
  regex)</li>
  <li>search the rest of the
  string for a match or do anything
  else that wouldn't be performant for
  a large number of tests against a
  large string.</li>
  </ol>
  
  <p>I would like to parse a potentially large user supplied body of text using an arbitrary user supplied grammar.  The grammar will be defined in a BNF or PEG like syntax, and the terminals will either be string literals or regular expressions.  Thus I will need to check if the next part of the string matches any of the potential terminals as driven by the grammar.  </p>