title: What is the difference between @include and @match in userscripts?
body: <p>The <a href="http://wiki.greasespot.net/Metadata_Block" rel="noreferrer">GreaseSpot page on metadata blocks</a> says that the two are very similar but <code>@match</code> "sets more strict rules on what the <code>*</code> character means."  GreaseSpot then proceeds to <a href="http://wiki.greasespot.net/Include_and_exclude_rules" rel="noreferrer">teach</a> using <code>@include</code>, but Chrome examples like <a href="https://www.chromium.org/developers/design-documents/user-scripts" rel="noreferrer">this</a> generally seem to use <code>@match</code> and indicate that <code>@include</code> is only supported for compatibility purposes; <code>@match</code> is preferred.</p>
  
  <p><a href="https://www.chromium.org/developers/design-documents/user-scripts" rel="noreferrer">Apparently</a>, <code>@include google.*</code> can run on google.evil.com while <code>@match google.*</code> cannot.<br>
  That one example is not sufficient to really see how the wildcards behave differently between these two, and better explanations are sought in answers here.</p>
  
  <p>New GreaseMonkey scripts (Firefox) use <code>@include</code> by default while new TamperMonkey scripts (for e.g. Chrome) use <code>@match</code> by default.</p>
  
  <p>What exactly are the differences between these two?</p>
  
  <p>For example, how does each one handle wildcards?<br>
  Are there differences in cross-browser compatibility?<br>
  What reasons would someone have for choosing to use one over the other?</p>