擅长:python、mysql、java
<p>你得到这个输出是因为
.*? 匹配任何字符(行终止符除外)</p>
<pre><code>(a).*?(b)?.*?(c)?(d)
Group 1. 0-1 `a`
Group 3. 7-8 `c`
Group 4. 8-9 `d`
</code></pre>
<p><strong>第一捕获组(a)</strong></p>
<p>a与字符a字面匹配(区分大小写)
.*? 匹配任何字符(行终止符除外)
*? 量词-零次和无限次之间的匹配,尽可能少的匹配,根据需要扩展(惰性)</p>
<p><strong>第二捕获组(b)?</strong></p>
<p>什么?量词-0到1次之间的匹配,尽可能多的匹配,根据需要回馈(贪婪)
b按字面意思与字符b匹配(区分大小写)
.*? 匹配任何字符(行终止符除外)
*? 量词-零次和无限次之间的匹配,尽可能少的匹配,根据需要扩展(惰性)</p>
<p><strong>第三捕获组(c)?</strong></p>
<p>什么?量词-0到1次之间的匹配,尽可能多的匹配,根据需要回馈(贪婪)
c匹配字符c(区分大小写)</p>
<p><strong>第4捕获组(d)</strong>
d按字面意思与字符d匹配(区分大小写)</p>
<p>但是如果要从字符串“axxxbcd”输出('a'、'b'、'c'、'd')</p>
<p>正则表达式应该是</p>
<pre><code> (a).*?(b)?(c)?(d)
Group 1. 0-1 `a`
Group 2. 6-7 `b`
Group 3. 7-8 `c`
Group 4. 8-9 `d`
</code></pre>