title: Differences between re.match, re.search, re.fullmatch
body: <p>From the <a href="https://docs.python.org/3/library/re.html#regular-expression-objects" rel="noreferrer">regex docs</a> it says that:</p>
  
  <p><strong>Pattern.match(...)</strong></p>
  
  <blockquote>
    <p>If zero or more characters at the beginning of string match this regular expression</p>
  </blockquote>
  
  <p><strong>Pattern.fullmatch(...)</strong></p>
  
  <blockquote>
    <p>If the whole string matches this regular expression</p>
  </blockquote>
  
  <p><strong>Pattern.search(...)</strong></p>
  
  <blockquote>
    <p>Scan through string looking for the first location where this regular expression produces a match</p>
  </blockquote>
  
  <p>Given the above, why couldn't someone just always use <code>search</code> to do everything? For example:</p>
  
  <pre><code>re.search(r'...'   # search
  re.search(r'^...'  or re.search(r'\A...'   # match
  re.search(r'^...$' or re.search(r'\A...\Z' # fullmatch
  </code></pre>
  
  <p>Are <code>match</code> and <code>fullmatch</code> just shortcuts (if they could be called that) for the <code>search</code> method? Or do they have other uses that I'm overlooking?</p>