<!DOCTYPE html>


<!--
 | Generated by Apache Maven Doxia Site Renderer 2.0.0 from src/site/markdown/exclusion_expression.md at 2025-09-13
 | Rendered using Apache Maven Fluido Skin 2.1.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
    <title>RAT Exclusion Expressions – Apache RAT™ Core</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-2.1.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-2.1.0.min.js"></script>
<link href="https://creadur.apache.org/font/matesc.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <a class="github-fork-ribbon right-top" href="https://github.com/apache/creadur-rat" data-ribbon="Fork me on GitHub">Fork me on GitHub</a>
    <div class="container-fluid container-fluid-top">
      <header>
        <div id="banner">
          <div class="pull-left"><div id="bannerLeft"><h1><a href="https://www.apache.org/"><img src="https://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" /> Apache RAT</a></h1></div></div>
          <div class="pull-right"></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2025-09-13<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 0.17-SNAPSHOT<span class="divider">|</span></li>
      <li><a href="https://www.apache.org/">Apache</a><span class="divider">/</span></li>
      <li><a href="../../">Creadur</a><span class="divider">/</span></li>
      <li><a href="../">RAT</a><span class="divider">/</span></li>
      <li><a href="index.html">Apache RAT™ Core</a><span class="divider">/</span></li>
    <li class="active">RAT Exclusion Expressions</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Parent Project</li>
    <li><a href="../index.html">Apache Creadur RAT</a></li>
   <li class="nav-header">Project Documentation</li>
    <li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
    <li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
   <li class="nav-header">Apache RAT™</li>
    <li><a href="../index.html">Introducing RAT</a></li>
    <li><a href="../download_rat.cgi">Downloads</a></li>
    <li><a href="../changes.html">Changes</a></li>
   <li class="nav-header">RAT from the Command Line</li>
    <li><a href="../apache-rat/index.html">Command Line Introduction</a></li>
    <li><a href="../apache-rat/cli_options.html">Command Line Options</a></li>
    <li><a href="../apache-rat-core/exclusion_expression.html">Exclusion Expressions</a></li>
    <li><a href="../apache-rat/standard_collections.html">Standard Collections</a></li>
   <li class="nav-header">RAT from Ant</li>
    <li><a href="../apache-rat-tasks/index.html">Ant Task Introduction</a></li>
    <li><a href="../apache-rat-tasks/ant_options.html">Ant Elements and Attributes</a></li>
   <li class="nav-header">RAT from Maven</li>
    <li><a href="../apache-rat-plugin/index.html">Maven Plugin Introduction</a></li>
    <li><a href="../apache-rat-plugin/mvn_options.html">Maven Options</a></li>
    <li><a href="../apache-rat-plugin/examples/index.html">Maven Examples</a></li>
   <li class="nav-header">Configuring RAT</li>
    <li><a href="../apache-rat/name_xref.html">Option Name Cross Reference</a></li>
    <li><a href="../apache-rat/default_licenses.html">Default Licenses</a></li>
    <li><a href="../apache-rat/default_matchers.html">Default Matchers</a></li>
    <li><a href="../license_def.html">Defining New Licenses</a></li>
    <li><a href="../apache-rat/xsd.html">Configuration XSD</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-rat/blob/master/apache-rat-core/src/main/resources/org/apache/rat/default.xml">Default Configuration</a></li>
    <li><a href="../apache-rat/detecting_generated_files.html">Detecting Generated Files</a></li>
   <li class="nav-header">RAT Output</li>
    <li><a href="../apache-rat/output/example.html">Standard Output Example</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-rat/blob/master/apache-rat-core/src/main/resources/org/apache/rat/rat-report.xsd">Output XSD</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-rat/blob/master/apache-rat-core/src/main/resources/org/apache/rat/plain-rat.xsl">XSLT - Plain text</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-rat/blob/master/apache-rat-core/src/main/resources/org/apache/rat/missing-headers.xsl">XSLT - Missing headers list</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-rat/blob/master/apache-rat-core/src/main/resources/org/apache/rat/unapproved-licenses.xsl">XSLT - Unapproved licenses list</a></li>
   <li class="nav-header">Developing RAT</li>
    <li><a href="../architecture.html">Architecture</a></li>
    <li><a href="../apidocs/index.html">Javadocs</a></li>
    <li><a href="../apache-rat-core/development/document_name.html">Document Name concept</a></li>
    <li><a href="../development/ui_implementation.html">UI Development</a></li>
    <li><a href="../apache-rat-core/development/write_file_processor.html">Writing a File Processor</a></li>
   <li class="nav-header">Apache Creadur™</li>
    <li><a href="../..">Creadur Project Home</a></li>
    <li><a href="../../tentacles">Apache Tentacles</a></li>
    <li><a href="../../whisker">Apache Whisker</a></li>
    <li><a href="https://www.apache.org/security/">Security</a></li>
    <li><a href="https://www.apache.org/licenses/">License</a></li>
    <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
    <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
    <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
   <li class="nav-header">The Apache Software Foundation</li>
    <li><a href="https://www.apache.org/foundation">About the Foundation</a></li>
    <li><a href="https://projects.apache.org">The projects</a></li>
    <li><a href="https://people.apache.org">The people</a></li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html">How we work</a></li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html#history">Our history</a></li>
    <li><a href="https://blogs.apache.org/foundation/">News</a></li>
   <li class="nav-header">Contribute</li>
    <li><a href="https://www.apache.org/foundation/getinvolved.html">Get Involved</a></li>
   <li class="nav-header">Committer Info</li>
    <li><a href="https://www.apache.org/dev/committers.html">ASF Committers&apos; FAQ</a></li>
    <li><a href="https://www.apache.org/dev/new-committers-guide.html">New Committers Guide</a></li>
    <li><a href="https://gitbox.apache.org/repos/asf/creadur-site/blob/asf-site/README.md">How to publish this site</a></li>
    <li><a href="https://community.apache.org/">Community</a></li>
    <li><a href="https://www.apache.org/legal/">Legal</a></li>
    <li><a href="https://www.apache.org/foundation/marks/">Branding</a></li>
    <li><a href="https://www.apache.org/press/">Media Relations</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
<a href="https://maven.apache.org/" class="builtBy"><img class="builtBy" src="https://maven.apache.org/images/logos/maven-feather.png" /> Maven</a>
            </div>
          </div>
        </header>
        <main id="bodyColumn" class="span10">
<!---
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<section><a id="RAT_Exclusion_Expressions"></a>
<h1>RAT Exclusion Expressions</h1>
<p>RAT uses a variation on the Ant or Git exclusion syntax.</p>
<ul>

<li><code>?</code> matches a single character. For example &#x2018;ca?&#x2019; will match &#x2018;cat&#x2019; and &#x2018;can&#x2019; but not &#x2018;call&#x2019; or the abbreviation for california  (or Canada) &#x2018;CA&#x2019;.</li>
<li><code>*</code> matches zero or more characters. For example &#x2018;ca*&#x2019; will match &#x2018;cat&#x2019;, &#x2018;can&#x2019;, &#x2018;call&#x2019; and the abbreviation for california  (or Canada) &#x2018;CA&#x2019;.</li>
<li><code>**</code> matches zero or more directories. For example &#x2018;**/ca?&#x2019; will match &#x2018;my/cat&#x2019;, &#x2018;my/can&#x2019;, &#x2018;the/cat&#x2019;, &#x2018;the/can&#x2019;, &#x2018;cat&#x2019; and &#x2018;can&#x2019;.</li>
<li><code>!</code> reverses the meaning of the expression. Example &#x201c;!ca?&#x201d; will not match &#x201c;cat&#x201d; or &#x201c;can&#x201d;. See include/exclude notes below.</li>
</ul>
<p>The table below shows an example of how the <code>*</code> and <code>**</code> differ and interact.</p>
<table class="table table-striped">
<thead>
<tr class="a">
<th> </th>
<th><code>foo/x/y</code></th>
<th><code>b/foo</code></th>
<th><code>b/foo/x</code></th>
<th><code>a/b/foo</code></th>
<th><code>foo</code></th>
<th><code>a/b/foo/x/y</code></th>
<th><code>a/b/foo/x</code></th>
<th><code>foo/x</code></th>
<th><code>b/foo/x/y</code></th></tr></thead><tbody>
<tr class="b">
<td><code>foo</code></td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td></tr>
<tr class="a">
<td><code>foo/*</code></td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td></tr>
<tr class="b">
<td><code>foo/**</code></td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td></tr>
<tr class="a">
<td><code>*/foo</code></td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td></tr>
<tr class="b">
<td><code>*/foo/*</code></td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td></tr>
<tr class="a">
<td><code>*/foo/**</code></td>
<td>F</td>
<td>T</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>T</td></tr>
<tr class="b">
<td><code>**/foo</code></td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>T</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>F</td></tr>
<tr class="a">
<td><code>**/foo/*</code></td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>F</td>
<td>F</td>
<td>F</td>
<td>T</td>
<td>T</td>
<td>F</td></tr>
<tr class="b">
<td><code>**/foo/**</code></td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td>
<td>T</td></tr></tbody>
</table>
<section><a id="Inclusion.2FExclusion_Notes"></a>
<h2>Inclusion/Exclusion Notes</h2>
<p>Patterns that are excluded may be superseded by patterns that are included.</p>
<p>For example: the exclusion pattern &#x2018;ca*&#x2019; used in conjunction with the include &#x2018;cat&#x2019; would result in the file &#x2018;cat&#x2019; being included but &#x2018;can&#x2019;, &#x2018;call&#x2019; and the abbreviation for california (or Canada) &#x2018;CA&#x2019; being excluded.</p>
<p>When processed a negated exclusion results in an inclusion, and a negated inclusion results in an exclusion.</p>
<p><strong>Once a file is explicitly included it can not be excluded.</strong></p></section><section><a id="Directory_separation_characters"></a>
<h2>Directory separation characters</h2>
<p>Patterns may use either &#x2018;/&#x2019; or &#x2018;\&#x2019; as the path separation character. &#x2018;/&#x2019; is recommended.</p></section><section><a id="Case_sensitivity"></a>
<h2>Case sensitivity</h2>
<p>The case sensitivity of the matching patterns depends upon the file system in use. If the file is case-sensitive then the matches are case-sensitive.</p></section></section>        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
Copyright &copy; 2016-2025 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
      Apache Creadur, Creadur, Apache RAT, Apache Tentacles, Apache Whisker, Apache and the ASF logo are trademarks
      of The Apache Software Foundation.
      Oracle and Java are registered trademarks of Oracle and/or its affiliates.
      All other marks mentioned may be trademarks or registered trademarks of their respective owners.
        </div>
      </div>
    </footer>
  </body>
</html>
