擅长:python、mysql、java
<p>“?”的语义有点复杂。你可以把它想象成副词“可能”的同义词
它是这样工作的:如果有一个子串匹配我的模式,然后继续匹配过程。我“强调”如果因为语义上的含意说,万一前提不满足,整句话还是真的。</p>
<p>因此,现在让我们将这一原则应用到您的案例中。你放了一个'?'在后缀上。假设前面的部分匹配,现在,让我们来处理后缀:如果有一个后缀匹配您的模式,那么整个字符串将匹配。如果后缀不匹配,就没有问题:用“?”标记的块是“可选的”(记住“可能的”语义,或者等价地,记住隐含语义),因此字符串仍然匹配。</p>
<p>所以,放一个'?'模式的最后一部分中的块不是很有用,因为无论是否有匹配的后缀,字符串仍将匹配。实际上,可选块只在字符串中间才有用。</p>