Note that there are some explanatory texts on larger screens.

plurals
  1. POc# regular expression match at specific index in string?
    text
    copied!<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>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload