title: Grep and regex - why am I escaping curly braces?
body: <p>I'm deeply puzzled by the way grep seems to parse a regex:</p>
  
  <pre><code>$ echo "@NS500287" | grep '^@NS500[0-9]{3}'
  #nothing
  $ echo "@NS500287" | grep '^@NS500[0-9]\{3\}'
  @NS500287
  </code></pre>
  
  <p>That can't be right. Why am I escaping curly brackets that are part of a "match the previous, N times" component (and not, say, the square brackets as well)?</p>
  
  <p>Shouldn't escaping be necessary only when I'm writing a regex that actually matches <code>{</code> and <code>}</code> as literal characters in the query string?</p>
  
  <p>More of a <em>cri de coeur</em> than anything else, but I'm curious about the answer. </p>