戴斌 發表於 2019-5-23 17:19:00

python正则表达式findall的使用

<div id="cnblogs_post_body" class="blogpost-body">
<p><span style="color: rgba(255, 0, 0, 1)"><strong>文章来源与:<span style="color: rgba(255, 0, 0, 1)">http://www.cnblogs.com/zjltt/p/6955965.html</span></strong></span></p>
<p><strong>正则表达式</strong></p>
<p>正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。</p>
<p><img src="https://images2015.cnblogs.com/blog/955761/201608/955761-20160805200743450-1819053688.png" alt=""></p>
<p><strong>正则表达式是用来匹配处理字符串的&nbsp;python 中使用正则表达式需要引入re模块</strong></p>
<p>如:</p>
<p><strong>import re #第一步,要引入re模块</strong></p>
<p><strong>a = re.findall("匹配规则", "要匹配的字符串") #第二步,调用模块函数</strong></p>
<p><strong>以列表形式返回匹配到的字符串</strong></p>
<p><strong>如:</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_367ae0fc-73a5-4b66-825a-1001f20b1a09" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_367ae0fc-73a5-4b66-825a-1001f20b1a09" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_367ae0fc-73a5-4b66-825a-1001f20b1a09" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">这个字符串是否有匹配规则的字符</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第二步,调用模块函数</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<p>&nbsp;</p>
<p><strong>^元字符</strong></p>
<p><strong>字符串开始位置与匹配规则符合就匹配,否则不匹配</strong></p>
<p><strong>匹配字符串开头。在多行模式中匹配每一行的开头</strong></p>
<pre><strong>^元字符如果写到[]字符集里就是反取<br></strong></pre>
<div class="cnblogs_code"><img id="code_img_closed_4ef8bba4-04f8-4b3e-b703-ad5a2faaa23f" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_4ef8bba4-04f8-4b3e-b703-ad5a2faaa23f" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_4ef8bba4-04f8-4b3e-b703-ad5a2faaa23f" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">^匹配规则</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则这个字符串是否匹配</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">字符串开始位置与匹配规则符合就匹配,否则不匹配</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<pre><strong>&nbsp;</strong></pre>
<pre><strong>[^a-z]反取,匹配出除字母外的字符,^元字符如果写到字符集里就是反取<br></strong></pre>
<div class="cnblogs_code"><img id="code_img_closed_14dcfba9-0b2f-4565-8aa5-5a8e72bf11f7" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_14dcfba9-0b2f-4565-8aa5-5a8e72bf11f7" class="code_img_opened" style="display: inline" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_14dcfba9-0b2f-4565-8aa5-5a8e72bf11f7" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">[^a-z]</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配s规则这s个字符串是否s匹配f规则则re则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">反取,匹配出除字母外的字符</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串', '是', '否', '匹', '配', '规', '则', '则', '则', '则', '则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<pre></pre>
<p><strong>$元字符</strong></p>
<p><strong>字符串结束位置与匹配规则符合就匹配,否则不匹配</strong></p>
<p><strong>匹配字符串末尾,在多行模式中匹配每一行的末尾</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_b60a9f8a-fc34-4fce-8fc4-ec74dc86a781" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_b60a9f8a-fc34-4fce-8fc4-ec74dc86a781" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_b60a9f8a-fc34-4fce-8fc4-ec74dc86a781" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则$</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">这个字符串是否匹配规则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">字符串结束位置与匹配规则符合就匹配,否则不匹配</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<p>&nbsp;</p>
<p><strong>*元字符</strong></p>
<p><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的<strong><strong>*元字符</strong></strong>)前面的一个字符可以是0个或多个原本字符</strong></p>
<p><strong>匹配前一个字符0或多次,贪婪匹配前导字符有多少个就匹配多少个很贪婪</strong></p>
<p><strong>如果规则里只有一个分组,尽量避免用*否则会有可能匹配出空字符串</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_71b53a42-49ef-4481-99ea-9b21a2c56fd4" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_71b53a42-49ef-4481-99ea-9b21a2c56fd4" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_71b53a42-49ef-4481-99ea-9b21a2c56fd4" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则*</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">这个字符串是否匹配规则则则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0或多个原本字符</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则则则则则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<p><strong>+元字符</strong></p>
<p><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的<strong><strong>+元字符</strong></strong>)前面的一个字符可以是1个或多个原本字符</strong></p>
<p><strong><strong><strong>匹配前一个字符1次或无限次,<strong><strong>贪婪匹配前导字符有多少个就匹配多少个很贪婪</strong></strong></strong></strong></strong></p>
<div class="cnblogs_code"><img id="code_img_closed_efac0100-d827-479e-99a8-9e9c0f90c7cd" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_efac0100-d827-479e-99a8-9e9c0f90c7cd" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_efac0100-d827-479e-99a8-9e9c0f90c7cd" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:gbk -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配配配配配规则这个字符串是否匹配规则则则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配配配配配', '匹配']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<p><strong>?元字符,和<strong><strong><strong><strong>防止贪婪匹配</strong></strong></strong></strong></strong></p>
<p><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的<strong><strong>?元字符</strong></strong>)前面的一个字符可以是0个或1个原本字符</strong></p>
<p><strong>匹配一个字符0次或1次</strong></p>
<p><strong>还有一个功能是可以防止贪婪匹配,详情见防贪婪匹配</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_b1b47217-6bfb-4f1c-9d6d-e015cb5b5232" class="code_img_closed" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_b1b47217-6bfb-4f1c-9d6d-e015cb5b5232" class="code_img_opened" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_b1b47217-6bfb-4f1c-9d6d-e015cb5b5232" class="cnblogs_code_hide" style="display: block">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则?</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规这个字符串是否匹配规则则则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">需要字符串里完全符合,匹配规则,就匹配,(规则里的?元字符)前面的一个字符可以是0个或1个原本字符</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规', '匹配规则']</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<span class="cnblogs_code_collapse" style="display: none">View Code</span></div>
<p><strong>{}元字符,范围</strong></p>
<p><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的&nbsp;<strong><strong>{} 元字符</strong></strong>)前面的一个字符,是自定义字符数,位数的原本字符</strong></p>
<p><strong>{m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次</strong></p>
<p>{0,}匹配前一个字符0或多次,等同于*元字符<br>{+,}匹配前一个字符1次或无限次,等同于+元字符<br>{0,1}匹配前一个字符0次或1次,等同于?元字符</p>
<div class="cnblogs_code"><img id="code_img_closed_0de8fd44-f0ab-4cb8-aebb-10b182123576" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_0de8fd44-f0ab-4cb8-aebb-10b182123576" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_0de8fd44-f0ab-4cb8-aebb-10b182123576" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则{3}</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规这个字符串是否匹配规则则则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">{m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则则则']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>[]元字符,字符集</strong></p>
<p><strong><strong><strong><strong><strong><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的&nbsp;<strong><strong>[] 元字符</strong></strong>)对应位置是<strong><strong><strong><strong><strong><strong><strong><strong>[]里的任意一个字符就匹配</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></p>
<p><strong>字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如或。[^abc]表示取反,即非abc。<br>所有特殊字符在字符集中都失去其原有的特殊含义。用\反斜杠转义恢复特殊字符的特殊含义。</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_c9d2113b-c14c-4c86-8658-4ba466d3e0b7" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_c9d2113b-c14c-4c86-8658-4ba466d3e0b7" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_c9d2113b-c14c-4c86-8658-4ba466d3e0b7" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配a规则这个字符串是否匹配b规则则则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">需要字符串里完全符合,匹配规则,就匹配,(规则里的 [] 元字符)对应位置是[]里的任意一个字符就匹配</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre><strong>[^]非,反取,匹配出除[^]里面的字符,^元字符如果写到字符集里就是反取<br><br></strong></pre>
<div class="cnblogs_code"><img id="code_img_closed_220aea90-69b5-477e-b4d0-b860274e2345" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_220aea90-69b5-477e-b4d0-b860274e2345" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_220aea90-69b5-477e-b4d0-b860274e2345" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">[^a-z]</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配s规则这s个字符串是否s匹配f规则则re则则则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">反取,匹配出除字母外的字符</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串', '是', '否', '匹', '配', '规', '则', '则', '则', '则', '则']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p><strong>反斜杠后边跟普通字符实现特殊功能;(即预定义字符)</strong></p>
<p><strong>预定义字符是在字符集和组里都是有用的</strong></p>
<p>\d匹配任何十进制数,它相当于类</p>
<div class="cnblogs_code"><img id="code_img_closed_21c0493e-4798-4b0a-b274-e775c5340dbe" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_21c0493e-4798-4b0a-b274-e775c5340dbe" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_21c0493e-4798-4b0a-b274-e775c5340dbe" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\d</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则这2个字符串3是否匹配规则5则则则7则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\d匹配任何十进制数,它相当于类</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['2', '3', '5', '7']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\d+如果需要匹配一位或者多位数的数字时用</p>
<div class="cnblogs_code"><img id="code_img_closed_ac74396b-dac5-478b-a74c-62953fb7372b" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_ac74396b-dac5-478b-a74c-62953fb7372b" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_ac74396b-dac5-478b-a74c-62953fb7372b" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:gbk -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\d+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则这2个字符串134444是否匹配规则5则则则7则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\d+如果需要匹配一位或者多位数的数字时用</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['2', '134444', '5', '7']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\D匹配任何非数字字符,它相当于类[^0-9]</p>
<div class="cnblogs_code"><img id="code_img_closed_28957160-dd9e-4ea0-8ed0-a379e24a7a41" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_28957160-dd9e-4ea0-8ed0-a379e24a7a41" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_28957160-dd9e-4ea0-8ed0-a379e24a7a41" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则这2个字符串3是否匹配规则5则则则7则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\D匹配任何非数字字符,它相当于类[^0-9]</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串', '是', '否', '匹', '配', '规', '则', '则', '则', '则', '则']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\s匹配任何空白字符,它相当于类[\t\n\r\f\v]</p>
<div class="cnblogs_code"><img id="code_img_closed_80796e6e-9131-4da4-9ba5-fd78c0336e48" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_80796e6e-9131-4da4-9ba5-fd78c0336e48" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_80796e6e-9131-4da4-9ba5-fd78c0336e48" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\s</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则   这2个字符串3是否匹\n配规则5则则则7则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\s匹配任何空白字符,它相当于类[\t\n\r\f\v]</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出[' ', ' ', ' ', '\n']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]</p>
<div class="cnblogs_code"><img id="code_img_closed_ecf991a8-9ff4-4cf3-8d38-ddd4f5f5ff00" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_ecf991a8-9ff4-4cf3-8d38-ddd4f5f5ff00" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_ecf991a8-9ff4-4cf3-8d38-ddd4f5f5ff00" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\S</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则   这2个字符串3是否匹\n配规则5则则则7则</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹', '配', '规', '则', '这', '2', '个', '字', '符', '串', '3', '是', '否', '匹', '配', '规', '则', '5', '则', '则', '则', '7', '则']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\w匹配包括下划线在内任何字母数字字符,它相当于类</p>
<div class="cnblogs_code"><img id="code_img_closed_850877de-6af7-4138-9fb4-c7de23f72370" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_850877de-6af7-4138-9fb4-c7de23f72370" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_850877de-6af7-4138-9fb4-c7de23f72370" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">\w</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://www.cnblogs.com/</span><span style="color: rgba(128, 0, 0, 1)">"</span>)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\w匹配包括下划线在内任何字母数字字符,它相当于类</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['h', 't', 't', 'p', 's', 'w', 'w', 'w', 'c', 'n', 'b', 'l', 'o', 'g', 's', 'c', 'o', 'm']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>\W匹配非任何字母数字字符包括下划线在内,它相当于类[^a-zA-Z0-9_]</p>
<div class="cnblogs_code"><img id="code_img_closed_50a11bce-a96c-4b47-8da4-8014231b6df9" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_50a11bce-a96c-4b47-8da4-8014231b6df9" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_50a11bce-a96c-4b47-8da4-8014231b6df9" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">\W</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://www.cnblogs.com/</span><span style="color: rgba(128, 0, 0, 1)">"</span>)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">\w匹配包括下划线在内任何字母数字字符,它相当于类</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出[':', '/', '/', '.', '.', '/']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>()元字符,分组</strong></p>
<p><strong>也就是分组匹配,<strong>()里面的为一个组也可以理解成一个整体</strong></strong></p>
<p><strong>如果()后面跟的是特殊元字符如 &nbsp; (adc)* &nbsp; 那么*控制的前导字符就是()里的整体内容,不再是前导一个字符</strong></p>
<p>列1</p>
<div class="cnblogs_code"><img id="code_img_closed_4b865012-8bd0-4caf-ad0d-d03abaed4697" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_4b865012-8bd0-4caf-ad0d-d03abaed4697" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_4b865012-8bd0-4caf-ad0d-d03abaed4697" class="cnblogs_code_hide">
<pre>#!/usr/bin/<span style="color: rgba(0, 0, 0, 1)">env python
# </span>-*- coding:utf8 -*-<span style="color: rgba(0, 0, 0, 1)">
import re   #第一步,要引入re模块
#也就是分组匹配,()里面的为一个组也可以理解成一个整体
a </span>= re.search(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(a4)+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a4a4a4a4a4dg4g654gb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)   #匹配一个或多个a4
b </span>=<span style="color: rgba(0, 0, 0, 1)"> a.group()
print(b)
#打印出 a4a4a4a4a4</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;列2</p>
<div class="cnblogs_code"><img id="code_img_closed_d9e2b9e5-901e-4cbe-90ea-116547487e3c" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_d9e2b9e5-901e-4cbe-90ea-116547487e3c" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_d9e2b9e5-901e-4cbe-90ea-116547487e3c" class="cnblogs_code_hide">
<pre>#!/usr/bin/<span style="color: rgba(0, 0, 0, 1)">env python
# </span>-*- coding:utf8 -*-<span style="color: rgba(0, 0, 0, 1)">
import re   #第一步,要引入re模块
#也就是分组匹配,()里面的为一个组也可以理解成一个整体
a </span>= re.search(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a(\d+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a466666664a4a4a4dg4g654gb</span><span style="color: rgba(128, 0, 0, 1)">"</span>)    #匹配 (a) (\d0-9的数字) (+可以是1个到多个0-<span style="color: rgba(0, 0, 0, 1)">9的数字)
b </span>=<span style="color: rgba(0, 0, 0, 1)"> a.group()
print(b)
#打印出 a466666664</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p><strong>|元字符,或</strong></p>
<p><strong>|或,或就是前后其中一个符合就匹配</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_1614573b-17bb-4f77-84e8-5f32146bc3a3" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_1614573b-17bb-4f77-84e8-5f32146bc3a3" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_1614573b-17bb-4f77-84e8-5f32146bc3a3" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(r<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">你|好</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a4a4a你4aabc4a4dgg好dg4g654g</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">|或,或就是前后其中一个符合就匹配</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(a)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['你', '好']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p><strong>r原生字符</strong></p>
<p><strong>将在python里有特殊意义的字符如\b,转换成原生字符(就是去除它在python的特殊意义),不然会给正则表达式有冲突,为了避免这种冲突可以在规则前加原始字符r</strong></p>
<p>&nbsp;</p>
<h2>re模块中常用功能函数</h2>
<p>正则表达式有两种书写方式,一种是直接在函数里书写规则,</p>
<div class="cnblogs_code"><img id="code_img_closed_47873858-1f9b-4b42-a062-173399f6ff56" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_47873858-1f9b-4b42-a062-173399f6ff56" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_47873858-1f9b-4b42-a062-173399f6ff56" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf-8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span> re   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第一步,要引入re模块</span>
a = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">匹配规则</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">这个字符串是否有匹配规则的字符</span><span style="color: rgba(128, 0, 0, 1)">"</span>)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">第二步,调用模块函数</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(a)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">以列表形式返回匹配到的字符串</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">打印出 ['匹配规则']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>match()函数(以后常用)</strong></p>
<p><strong>match,从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None</strong><br><strong>match(pattern, string, flags=0)</strong><br><strong># pattern: 正则模型</strong><br><strong># string : 要匹配的字符串</strong><br><strong># falgs : 匹配模式</strong></p>
<p><em><strong><strong>注意:match()函数 与&nbsp;<strong>search()函数基本是一样的功能,不一样的就是<em><strong><strong>match()匹配字符串开始位置的一个符合规则的字符串,<em><strong><strong><strong>search()是在字符串全局匹配第一个<em><strong><strong><strong><em><strong><strong>合规则的字符串</strong></strong></em></strong></strong></strong></em></strong></strong></strong></em></strong></strong></em></strong></strong></strong></em></p>
<div class="cnblogs_code"><img id="code_img_closed_391c8da3-42d8-4481-abef-1e42d7d6abaf" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_391c8da3-42d8-4481-abef-1e42d7d6abaf" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_391c8da3-42d8-4481-abef-1e42d7d6abaf" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">无分组</span>
origin = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello egon bcd egon lge egon acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.match(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">h\w+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">match,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> hello   匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ()      没有分组所以为空</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {}      没分组部分定义了key的组所以为空</span>


<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 有分组</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 为何要有分组?提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来)</span>
r = re.match(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">h(\w+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">match,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> hello         匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ('ello',)   有分组,在匹配到的字符串中拿出分组的部分</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {}            没分组部分定义了key的组所以为空</span>


<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 有两个分组定义了key</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 为何要有分组?提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来)</span>
r = re.match(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(?P&lt;n1&gt;h)(?P&lt;n2&gt;\w+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">?P&lt;&gt;定义组里匹配内容的key(键),&lt;&gt;里面写key名称,值就是匹配到的内容</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> hello                         匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ('h', 'ello')               有分组,在匹配到的字符串中拿出分组的部分</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {'n1': 'h', 'n2': 'ello'}   有定义了key的组所以,将定义了key的组里的内容以字典形式拿出来</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>?P&lt;n1&gt; &nbsp;#?P&lt;&gt;定义组里匹配内容的key(键),&lt;&gt;里面写key名称,值就是匹配到的内容(<strong>只对正则函数返回对象的有用</strong>)</p>
<p><strong>取出匹配对象方法</strong></p>
<p><strong>只对正则函数返回对象的有用</strong></p>
<p>group() # 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来,有参取匹配到的第几个如2<br>groups() # 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果<br>groupdict() # 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>search()函数</strong><br><strong>search,浏览全部字符串,匹配第一符合规则的字符串,浏览整个字符串去匹配第一个,未匹配成功返回None</strong><br><strong>search(pattern, string, flags=0)</strong><br><strong># pattern: 正则模型</strong><br><strong># string : 要匹配的字符串</strong><br><strong># falgs : 匹配模式</strong></p>
<p><strong><em><strong><strong>注意:match()函数 与&nbsp;<strong>search()函数基本是一样的功能,不一样的就是<em><strong><strong>match()匹配字符串开始位置的一个符合规则的字符串,<em><strong><strong><strong>search()是在字符串全局匹配第一个<em><strong><strong><strong><em><strong><strong>合规则的字符串</strong></strong></em></strong></strong></strong></em></strong></strong></strong></em></strong></strong></em></strong></strong></strong></em></strong></p>
<div class="cnblogs_code"><img id="code_img_closed_87441fc1-2e1b-4e6c-9281-96a6574aca5c" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_87441fc1-2e1b-4e6c-9281-96a6574aca5c" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_87441fc1-2e1b-4e6c-9281-96a6574aca5c" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">无分组</span>
origin = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.search(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a\w+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">search浏览全部字符串,匹配第一符合规则的字符串,浏览整个字符串去匹配第一个,未匹配成功返回None</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> alex   匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ()      没有分组所以为空</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {}      没分组部分定义了key的组所以为空</span>


<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 有分组</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 为何要有分组?提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来)</span>
r = re.search(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a(\w+).*(\d)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, origin)
</span><span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> alex bcd alex lge alex acd 19       匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ('lex', '9')   有分组,在匹配到的字符串中拿出分组的部分</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {}            没分组部分定义了key的组所以为空</span>


<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 有两个分组定义了key</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 为何要有分组?提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来)</span>
r = re.search(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a(?P&lt;n1&gt;\w+).*(?P&lt;n2&gt;\d)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">?P&lt;&gt;定义组里匹配内容的key(键),&lt;&gt;里面写key名称,值就是匹配到的内容</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.group())   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groups())    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果</span>
<span style="color: rgba(0, 0, 255, 1)">print</span>(r.groupdict()) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> alex bcd alex lge alex acd 19                         匹配到的全部拿出来</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ('lex', '9')               有分组,在匹配到的字符串中拿出分组的部分</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> {'n1': 'lex', 'n2': '9'}   有定义了key的组所以,将定义了key的组里的内容以字典形式拿出来</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>findall()函数(以后常用)</strong></p>
<p><strong><strong><strong>findall</strong>(pattern, string, flags=0)</strong><br><strong># pattern: 正则模型</strong><br><strong># string : 要匹配的字符串</strong><br><strong># falgs : 匹配模式</strong></strong></p>
<p><strong>浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中,<strong>未匹配成功返回空列表</strong></strong></p>
<p><strong>注意:一旦匹配成,再次匹配,是从前一次匹配成功<strong>的</strong>,后面一位开始的,也可以理解为匹配成功的字符串,不在参与下次匹配</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_e90108ed-a2ed-4e72-b10b-1b22b14bb7b9" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_e90108ed-a2ed-4e72-b10b-1b22b14bb7b9" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_e90108ed-a2ed-4e72-b10b-1b22b14bb7b9" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">无分组</span>
r = re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">\d+\w\d+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a2b3c4d5</span><span style="color: rgba(128, 0, 0, 1)">"</span>)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">['2b3', '4d5']</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">注意:匹配成功的字符串,不在参与下次匹配,所以3c4也符合规则但是没匹配到</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;<strong>注意:如果没写匹配规则,也就是空规则,返回的是一个比原始字符串多一位的,空字符串列表</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_39217207-46a2-44d9-a520-1e9fd7a8e40c" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_39217207-46a2-44d9-a520-1e9fd7a8e40c" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_39217207-46a2-44d9-a520-1e9fd7a8e40c" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">无分组</span>
r = re.findall(<span style="color: rgba(128, 0, 0, 1)">""</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a2b3c4d5</span><span style="color: rgba(128, 0, 0, 1)">"</span>)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">['', '', '', '', '', '', '', '', '']</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">注意:如果没写匹配规则,也就是空规则,返回的是一个比原始字符串多一位的,空字符串列表 </span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre></pre>
<p><strong>注意:正则匹配到空字符的情况,如果规则里只有一个组,而组后面是*就表示组里的内容可以是0个或者多过,这样组里就有了两个意思,一个意思是匹配组里的内容,二个意思是匹配组里0内容(即是空白)所以尽量避免用*否则会有可能匹配出空字符串</strong></p>
<p><strong>注意:正则只拿组里最后一位,如果规则里只有一个组,匹配到的字符串里在拿组内容是,拿的是匹配到的内容最后一位</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_d9eddb69-9baa-4adc-82e8-dcac99a458a5" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_d9eddb69-9baa-4adc-82e8-dcac99a458a5" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_d9eddb69-9baa-4adc-82e8-dcac99a458a5" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(a)*</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, origin)   
</span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果 ['', '', '', '', '', '', 'a', '', '', '', '', '', '', '', '', 'a', '', '', '', '', '', '', '', '', 'a', '', '', '', '', 'a', '', '', '', '', '', '']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre><strong><br>无分组:匹配所有合规则的字符串,匹配到的字符串放到一个列表中<br></strong></pre>
<div class="cnblogs_code"><img id="code_img_closed_2611c652-bb72-47f2-8a82-ad841d635f39" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_2611c652-bb72-47f2-8a82-ad841d635f39" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_2611c652-bb72-47f2-8a82-ad841d635f39" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">无分组</span>
origin = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a\w+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">['alex', 'alex', 'alex', 'acd']</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">匹配所有合规则的字符串,匹配到的字符串放到一个列表中</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre><strong>&nbsp;</strong></pre>
<p><strong>有分组:只将匹配到的字符串里,组的部分放到列表里返回,相当于groups()方法</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_65a4cc61-9ae5-4617-8211-d4b69ca40485" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_65a4cc61-9ae5-4617-8211-d4b69ca40485" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_65a4cc61-9ae5-4617-8211-d4b69ca40485" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a(\w+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">有分组:只将匹配到的字符串里,组的部分放到列表里返回</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">['lex', 'lex', 'lex', 'cd']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>&nbsp;多个分组:只将匹配到的字符串里,组的部分放到一个元组中,最后将所有元组放到一个列表里返</strong></p>
<p><strong>相当于在group()结果里再将组的部分,分别,拿出来放入一个元组,最后将所有元组放入一个列表返回</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_ae5eeec9-7b42-4bb8-b6c7-e6855fadf5c8" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_ae5eeec9-7b42-4bb8-b6c7-e6855fadf5c8" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_ae5eeec9-7b42-4bb8-b6c7-e6855fadf5c8" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(a)(\w+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">多个分组:只将匹配到的字符串里,组的部分放到一个元组中,最后将所有元组放到一个列表里返回</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">[('a', 'lex'), ('a', 'lex'), ('a', 'lex'), ('a', 'cd')]</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><strong>&nbsp;分组中有分组:只将匹配到的字符串里,组的部分放到一个元组中,先将包含有组的组,看作一个整体也就是一个组,把这个整体组放入一个元组里,然后在把组里的组放入一个元组,最后将所有组放入一个列表返回</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_0e3b19ce-2020-41f0-86b3-4009cd1cca5a" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_0e3b19ce-2020-41f0-86b3-4009cd1cca5a" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_0e3b19ce-2020-41f0-86b3-4009cd1cca5a" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(a)(\w+(e))</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin)    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">分组中有分组:只将匹配到的字符串里,组的部分放到一个元组中,先将包含有组的组,看作一个整体也就是一个组,把这个整体组放入一个元组里,然后在把组里的组放入一个元组,最后将所有组放入一个列表返回</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">[('a', 'le', 'e'), ('a', 'le', 'e'), ('a', 'le', 'e')]</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre><strong>?:在有分组的情况下findall()函数,不只拿分组里的字符串,拿所有匹配到的字符串,注意?:只用于不是返回正则对象的函数如findall()<br></strong></pre>
<div class="cnblogs_code"><img id="code_img_closed_8a65c93c-fd2d-4729-9a97-58d7b80d2f94" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_8a65c93c-fd2d-4729-9a97-58d7b80d2f94" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_8a65c93c-fd2d-4729-9a97-58d7b80d2f94" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
b </span>= re.findall(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a(?:\w+)</span><span style="color: rgba(128, 0, 0, 1)">"</span>,origin) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">?:在有分组的情况下,不只拿分组里的字符串,拿所有匹配到的字符串,注意?:只用于不是返回正则对象的函数如findall()</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(b)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> ['alex', 'alex', 'alex', 'acd']</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<pre></pre>
<p>&nbsp;</p>
<p><strong>split()函数</strong></p>
<p><strong>根据正则匹配分割字符串,返回分割后的一个列表</strong></p>
<p><strong><code class="python plain">split(pattern, string, maxsplit</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">, flags</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">)</code></strong></p>
<div class="line number4 index3 alt1"><strong><code class="python comments"># pattern: 正则模型</code></strong></div>
<div class="line number5 index4 alt2"><strong><code class="python comments"># string : 要匹配的字符串</code></strong></div>
<div class="line number6 index5 alt1"><strong><code class="python comments"># maxsplit:指定分割个数</code></strong></div>
<div class="line number7 index6 alt2"><strong><code class="python comments"># flags&nbsp; : 匹配模式</code></strong></div>
<div class="line number7 index6 alt2">&nbsp;</div>
<div class="line number7 index6 alt2"><strong>按照一个字符将全部字符串进行分割</strong></div>
<div class="line number7 index6 alt2">
<div class="cnblogs_code"><img id="code_img_closed_55a7f3f5-796d-4632-b8b9-9ee2fb1eedaf" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_55a7f3f5-796d-4632-b8b9-9ee2fb1eedaf" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_55a7f3f5-796d-4632-b8b9-9ee2fb1eedaf" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.split(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">根据正则匹配分割字符串</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果 ['hello ', 'lex bcd ', 'lex lge ', 'lex ', 'cd 19']</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">根据a进行分组</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
</div>
<div class="line number7 index6 alt2">
<p><strong>将匹配到的字符串作为分割标准进行分割</strong></p>
<div class="cnblogs_code"><img id="code_img_closed_a51b39e2-05a5-4413-8887-53ff73101aec" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_a51b39e2-05a5-4413-8887-53ff73101aec" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_a51b39e2-05a5-4413-8887-53ff73101aec" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex 2acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.split(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a\w+</span><span style="color: rgba(128, 0, 0, 1)">"</span>, origin) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">根据正则匹配分割字符串</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出结果 ['hello ', ' bcd ', ' lge ', ' 2', ' 19']</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)">将匹配到的字符串作为分割标准进行分割</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;<strong>sub()函数</strong></p>
<p><strong>替换匹配成功的指定位置字符串</strong></p>
<p><strong><code class="python plain">sub(pattern, repl, string, count</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">, flags</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">)</code></strong></p>
<div class="line number4 index3 alt1"><strong><code class="python comments"># pattern: 正则模型</code></strong></div>
<div class="line number5 index4 alt2"><strong><code class="python comments"># repl&nbsp;&nbsp; : 要替换的字符串</code></strong></div>
<div class="line number6 index5 alt1"><strong><code class="python comments"># string : 要匹配的字符串</code></strong></div>
<div class="line number7 index6 alt2"><strong><code class="python comments"># count&nbsp; : 指定匹配个数</code></strong></div>
<div class="line number8 index7 alt1"><strong><code class="python comments"># flags&nbsp; : 匹配模式</code></strong></div>
<div class="line number8 index7 alt1">
<div class="cnblogs_code"><img id="code_img_closed_0c973c27-2d76-4f8f-a973-587b20420849" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_0c973c27-2d76-4f8f-a973-587b20420849" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_0c973c27-2d76-4f8f-a973-587b20420849" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
r </span>= re.sub(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">替换</span><span style="color: rgba(128, 0, 0, 1)">"</span>,origin) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">替换匹配成功的指定位置字符串</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(r)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> hello 替换lex bcd 替换lex lge 替换lex 替换cd 19</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
</div>
<div class="line number8 index7 alt1">
<p>&nbsp;</p>
<p><strong>subn()函数</strong></p>
<p><strong>替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接受</strong></p>
<p><strong><code class="python plain">subn(pattern, repl, string, count</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">, flags</code><code class="python keyword">=</code><code class="python value">0</code><code class="python plain">)</code></strong></p>
<div class="line number4 index3 alt1"><strong><code class="python comments"># pattern: 正则模型</code></strong></div>
<div class="line number5 index4 alt2"><strong><code class="python comments"># repl&nbsp;&nbsp; : 要替换的字符串</code></strong></div>
<div class="line number6 index5 alt1"><strong><code class="python comments"># string : 要匹配的字符串</code></strong></div>
<div class="line number7 index6 alt2"><strong><code class="python comments"># count&nbsp; : 指定匹配个数</code></strong></div>
<div class="line number8 index7 alt1"><strong><code class="python comments"># flags&nbsp; : 匹配模式</code></strong></div>
<div class="line number8 index7 alt1">
<div class="cnblogs_code"><img id="code_img_closed_eab094fd-4d86-4b6f-b30a-090e5bd4978e" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_eab094fd-4d86-4b6f-b30a-090e5bd4978e" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_eab094fd-4d86-4b6f-b30a-090e5bd4978e" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">!/usr/bin/env python</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> -*- coding:utf8 -*-</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> re
origin </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hello alex bcd alex lge alex acd 19</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
a,b </span>= re.subn(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">替换</span><span style="color: rgba(128, 0, 0, 1)">"</span>,origin) <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接受</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(a)
</span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(b)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">输出</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> hello 替换lex bcd 替换lex lge 替换lex 替换cd 19</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 4</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
</div>
<div class="line number8 index7 alt1">
<p>&nbsp;</p>
<p><strong>元字符表</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p align="left">.</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>.</strong><strong>元字符)可以是任何一个字符,</strong><strong>匹配任意除换行符</strong><strong>"\n"</strong><strong>外的字符</strong><strong>(</strong><strong>在</strong><strong>DOTALL</strong><strong>模式中也能匹配换行符</strong><strong>)</strong></p>
</td>
<td valign="top">
<p align="left">a.c</p>
</td>
<td valign="top">
<p align="left">abc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">\</p>
</td>
<td valign="top">
<p align="left"><strong>1.</strong><strong>反斜杠后边跟元字符去除特殊功能;(即将特殊字符转义成普通字符),</strong><strong>2.</strong><strong>反斜杠后边跟普通字符实现特殊功能;(即预定义字符),</strong><strong>3.\2</strong><strong>引用序号对应的字组</strong></p>
</td>
<td valign="top">
<p align="left">a\.c;a\\c</p>
</td>
<td valign="top">
<p align="left">a.c;a\c</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">*</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>*</strong><strong>元字符)前面的一个字符可以是</strong><strong>0</strong><strong>个或多个原本字符,</strong><strong>匹配前一个字符</strong><strong>0</strong><strong>或多次,贪婪匹配前导字符有多少个就匹配多少个很贪婪,</strong><strong>如果规则里只有一个分组,尽量避免用</strong><strong>*</strong><strong>否则会有可能匹配出空字符串</strong></p>
</td>
<td valign="top">
<p align="left">abc*</p>
</td>
<td valign="top">
<p align="left">ab;abccc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">+</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>+</strong><strong>元字符)前面的一个字符可以是</strong><strong>1</strong><strong>个或多个原本字符,</strong><strong>匹配前一个字符</strong><strong>1</strong><strong>次或无限次,贪婪匹配前导字符有多少个就匹配多少个很贪婪</strong></p>
</td>
<td valign="top">
<p align="left">abc+</p>
</td>
<td valign="top">
<p align="left">abc;abccc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">?</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>?</strong><strong>元字符)前面的一个字符可以是</strong><strong>0</strong><strong>个或</strong><strong>1</strong><strong>个原本字符,</strong><strong>匹配一个字符</strong><strong>0</strong><strong>次或</strong><strong>1</strong><strong>次,还有一个功能是可以防止贪婪匹配,详情见防贪婪匹配</strong></p>
</td>
<td valign="top">
<p align="left">abc?</p>
</td>
<td valign="top">
<p align="left">ab;abc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">^</p>
</td>
<td valign="top">
<pre><strong>字符串开始位置与匹配规则符合就匹配,否则不匹配</strong><strong>,</strong><strong>匹配字符串开头。在多行模式中匹配每一行的开头</strong><strong>,</strong><strong>^元字符如果写到[]字符集里就是反取</strong></pre>
</td>
<td valign="top">
<p align="left">^abc</p>
</td>
<td valign="top">
<p align="left">abc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">$</p>
</td>
<td valign="top">
<p align="left"><strong>字符串结束位置与匹配规则符合就匹配,否则不匹配,</strong><strong>匹配字符串末尾,在多行模式中匹配每一行的末尾</strong></p>
</td>
<td valign="top">
<p align="left">abc$</p>
</td>
<td valign="top">
<p align="left">abc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">|</p>
</td>
<td valign="top">
<p align="left"><strong>|</strong><strong>或,或就是前后其中一个符合就匹配</strong></p>
</td>
<td valign="top">
<p align="left">abc|def</p>
</td>
<td valign="top">
<p align="left">abc</p>
<p align="left">def</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">{}</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>&nbsp;{}&nbsp;</strong><strong>元字符)前面的一个字符,是自定义字符数,位数的原本字符,</strong><strong>{m}</strong><strong>匹配前一个字符</strong><strong>m</strong><strong>次,</strong><strong>{m,n}</strong><strong>匹配前一个字符</strong><strong>m</strong><strong>至</strong><strong>n</strong><strong>次,若省略</strong><strong>n</strong><strong>,则匹配</strong><strong>m</strong><strong>至无限次,</strong>{0,}匹配前一个字符0或多次,等同于*元字符,{+,}匹配前一个字符1次或无限次,等同于+元字符,{0,1}匹配前一个字符0次或1次,等同于?元字符</p>
</td>
<td valign="top">
<p align="left">ab{1,2}c</p>
</td>
<td valign="top">
<p align="left">abc</p>
<p align="left">abbc</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">[]</p>
</td>
<td valign="top">
<p align="left"><strong>需要字符串里完全符合,匹配规则,就匹配,(规则里的</strong><strong>&nbsp;[]&nbsp;</strong><strong>元字符)对应位置是</strong><strong>[]</strong><strong>里的任意一个字符就匹配,</strong><strong>字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如</strong><strong></strong><strong>或</strong><strong></strong><strong>。</strong><strong>[^abc]</strong><strong>表示取反,即非</strong><strong>abc</strong><strong>。所有特殊字符在字符集中都失去其原有的特殊含义。用</strong><strong>\</strong><strong>反斜杠转义恢复特殊字符的特殊含义。</strong></p>
</td>
<td valign="top">
<p align="left">ae</p>
</td>
<td valign="top">
<p align="left">abe</p>
<p align="left">ace</p>
<p align="left">ade</p>
<p align="left">&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="left">()</p>
</td>
<td valign="top">
<p align="left"><strong>也就是分组匹配,</strong><strong>()</strong><strong>里面的为一个组也可以理解成一个整体,</strong><strong>如果</strong><strong>()</strong><strong>后面跟的是特殊元字符如</strong><strong>&nbsp;&nbsp; (adc)* &nbsp;&nbsp;</strong><strong>那么</strong><strong>*</strong><strong>控制的前导字符就是</strong><strong>()</strong><strong>里的整体内容,不再是前导一个字符</strong></p>
</td>
<td valign="top">
<p align="left">(abc){2}<br>a(123|456)c</p>






</td>
<td valign="top">
<p align="left">abcabc</p>
<p align="left">a456c</p>






</td>






</tr>






</tbody>






</table>
<p align="left"><strong>预定义字符集表,</strong><strong>可以写在字符集</strong><strong>[...]</strong><strong>中</strong><strong>&nbsp;</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p align="left">\d</p>






</td>
<td valign="top">
<p align="left">\d匹配任何十进制数,它相当于类,\d+如果需要匹配一位或者多位数的数字时用</p>






</td>
<td valign="top">
<p align="left">a\bc</p>






</td>
<td valign="top">
<p align="left">a1c</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\D</p>






</td>
<td valign="top">
<p align="left">\D匹配任何非数字字符,它相当于类[^0-9]</p>






</td>
<td valign="top">
<p align="left">a\Dc</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\s</p>






</td>
<td valign="top">
<p align="left">\s匹配任何空白字符,它相当于类[\t\n\r\f\v]</p>






</td>
<td valign="top">
<p align="left">a\sc</p>






</td>
<td valign="top">
<p align="left">a c</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\S</p>






</td>
<td valign="top">
<p align="left">\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]</p>






</td>
<td valign="top">
<p align="left">a\Sc</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\w</p>






</td>
<td valign="top">
<p align="left">\w匹配包括下划线在内任何字母数字字符,它相当于类</p>






</td>
<td valign="top">
<p align="left">a\wc</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\W</p>






</td>
<td valign="top">
<p align="left">\W匹配非任何字母数字字符包括下划线在内,它相当于类[^a-zA-Z0-9_]</p>






</td>
<td valign="top">
<p align="left">a\Wc</p>






</td>
<td valign="top">
<p align="left">a c</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\A</p>






</td>
<td valign="top">
<p align="left">仅匹配字符串开头,同^</p>






</td>
<td valign="top">
<p align="left">\Aabc</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\Z</p>






</td>
<td valign="top">
<p align="left">仅匹配字符串结尾,同$</p>






</td>
<td valign="top">
<p align="left">abc\Z</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\b</p>






</td>
<td valign="top">
<p align="left">b匹配一个单词边界,也就是指单词和空格间的位置</p>






</td>
<td valign="top">
<p align="left">\babc\b<br>a\b!bc</p>






</td>
<td valign="top">
<p align="left">空格abc空格<br>a!bc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\B</p>






</td>
<td valign="top">
<p align="left">[^\b]</p>






</td>
<td valign="top">
<p align="left">a\Bbc</p>






</td>
<td valign="top">
<p align="left">abc</p>






</td>






</tr>






</tbody>






</table>
<p>&nbsp;</p>
<p align="left"><strong>特殊分组用法表:</strong><strong>只对正则函数返回对象的有用</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p align="left">(?P&lt;name&gt;)</p>






</td>
<td valign="top">
<p align="left">?P&lt;&gt;定义组里匹配内容的key(键),&lt;&gt;里面写key名称,值就是匹配到的内容,在用groupdict()方法打印字符串</p>






</td>
<td valign="top">
<p align="left">(?P&lt;id&gt;abc){2}</p>






</td>
<td valign="top">
<p align="left">abcabc</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">(?P=name)</p>






</td>
<td valign="top">
<p align="left">引用别名为&lt;name&gt;的分组匹配到字符串</p>






</td>
<td valign="top">
<p align="left">(?P&lt;id&gt;\d)abc(?P=id)</p>






</td>
<td valign="top">
<p align="left">1abc1</p>
<p align="left">5abc5</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">\&lt;number&gt;</p>






</td>
<td valign="top">
<p align="left">引用编号为&lt;number&gt;的分组匹配到字符串</p>






</td>
<td valign="top">
<p align="left">(\d)abc\1</p>






</td>
<td valign="top">
<p align="left">1abc1</p>
<p align="left">5abc5</p>






</td>






</tr>






</tbody>






</table>






</div>






</div>
<p>&nbsp;</p>
<p align="left"><strong>正则匹配模式表</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p align="left">标志</p>






</td>
<td valign="top">
<p align="left">含义</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.S(DOTALL)</p>






</td>
<td valign="top">
<p align="left">使.匹配包括换行在内的所有字符</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.I(IGNORECASE)</p>






</td>
<td valign="top">
<p align="left">使匹配对大小写不敏感</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.L(LOCALE)</p>






</td>
<td valign="top">
<p align="left">做本地化识别(locale-aware)匹配,法语等</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.M(MULTILINE)</p>






</td>
<td valign="top">
<p align="left">多行匹配,影响^和$</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.X(VERBOSE)</p>






</td>
<td valign="top">
<p align="left">该标志通过给予更灵活的格式以便将正则表达式写得更易于理解</p>






</td>






</tr>
<tr>
<td valign="top">
<p align="left">re.U</p>






</td>
<td valign="top">
<p align="left">根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B</p>






</td>






</tr>






</tbody>






</table>
<p align="left">&nbsp;</p>
<p><strong>正则表达式重点</strong></p>
<p><strong>一、</strong></p>
<p><strong>r原生字符</strong></p>
<p><strong>将在python里有特殊意义的字符如\b,转换成原生字符(就是去除它在python的特殊意义),不然会给正则表达式有冲突,为了避免这种冲突可以在规则前加原始字符r</strong></p>
<p>&nbsp;</p>
<p><strong>二、</strong></p>
<p><strong>正则表达式,返回类型为表达式对象的</strong></p>
<p><strong>如:&lt;_sre.SRE_Match object; span=(6, 7), match='a'&gt; &nbsp;</strong></p>
<p><strong>返回对象的,需要用正则方法取字符串,</strong></p>
<p><strong>方法有</strong></p>
<p><strong>group() # 获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来,有参取匹配到的第几个如2<br>groups() # 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果<br>groupdict() # 获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果</strong></p>
<p>&nbsp;</p>
<p><strong>三、</strong></p>
<p><strong>匹配到的字符串里出现空字符</strong></p>
<p><strong>注意:正则匹配到空字符的情况,如果规则里只有一个组,而组后面是*就表示组里的内容可以是0个或者多过,这样组里就有了两个意思,一个意思是匹配组里的内容,二个意思是匹配组里0内容(即是空白)所以尽量避免用*否则会有可能匹配出空字符串</strong></p>






</div>
<p>&nbsp;</p>
<p class="postTitle">四、</p>
<p class="postTitle">()分组</p>
<p><strong>注意:分组的意义,就是在匹配成功的字符串中,在提取()里,组里面的字符串</strong></p>
<p>&nbsp;</p>
<p><strong>五、</strong></p>
<p>&nbsp;</p>
<pre><strong>?:在有分组的情况下findall()函数,不只拿分组里的字符串,拿所有匹配到的字符串,注意?:只用于不是返回正则对象的函数如findall()</strong></pre>
</div>

</div>
<div id="MySignature" role="contentinfo">
    <div>请尊重笔者的劳动成果哦,转载请说明出处哦 </div><br><br>
来源:https://www.cnblogs.com/gufengchen/p/10913186.html
頁: [1]
查看完整版本: python正则表达式findall的使用