擅长:python、mysql、java
<p>AKX几乎是对的,但不仅仅如此</p>
<p><code>19|20\d\d</code>将匹配<code>19</code>或<code>20 followed by 2 digits</code></p>
<p><strong>但它将不匹配^{<cd4>。</strong></p>
<p>看看这里:<a href="https://regex101.com/r/lvYGUb/3" rel="nofollow noreferrer">https://regex101.com/r/lvYGUb/3</a></p>
<p>您将看到2010是单个匹配,而19是单独匹配的,没有<code>93</code>,因此93与<code>.txt</code>组匹配,这可能不是您想要的</p>
<P>以类似的方式,考虑这个数据文件:</P>
<pre><code>20 euros
20 €
</code></pre>
<p>假设您希望使用正则表达式100%匹配这两行</p>
<p><code>\d+ euros|€</code>不起作用,因为它表示<code>a number followed by the word euros</code>或<code>just the € sign alone</code></p>
<p>但是</p>
<p><code>\d+ (euros|€)</code>将起作用</p>
<p>因此,这里括号的目的不是捕获组,它们只是为OR运算符设置边界</p>
<p>如果不希望这些括号捕获组,可以添加<code>?:</code>使其成为非捕获组,如下所示:</p>
<pre><code>^(.*?)((0|1)?\d)-((0|1|2|3)?\d)-((?:19|20)\d\d)(.*?)$
</code></pre>