擅长:python、mysql、java
<p>正则表达式<code>[\^a]b</code>将匹配<code>ab</code>或<code>^b</code>,因此它不应匹配字符串<code>'b'</code>。</p>
<p>请注意,<code>re.match()</code>只匹配字符串的开头,这就好像在regex的开头有一个字符串的开头锚(<code>^</code>或<code>\A</code>启用了多行选项)。</p>
<p>因此“若要搜索出现在行首或后跟“a”的“b”,需要将<code>re.search()</code>与以下正则表达式一起使用:</p>
<pre><code>(^|a)b
</code></pre>
<p>注意,我对这一点的解释与其他答案略有不同,我认为您的需求意味着您希望匹配<code>'bob'</code>中的“b”和<code>'taboo'</code>中的<code>ab</code>,因此行的起始需求仅适用于<code>b</code>,而不是<code>a</code>。</p>
<p>与<code>^b|ab</code>相比,组中的这种交替方法为您提供了一个更具可伸缩性的解决方案,因此要在字符串开头或前面加上<code>a</code>、<code>x</code>、<code>2</code>或<code>5</code>来匹配<code>b</code>,您可以使用以下方法:</p>
<pre><code>(^|[ax25])b
</code></pre>