栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python编程:正则表达式详解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python编程:正则表达式详解

正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

1.正则表达式的作用

很多时候我们学习了正则表达式,但是却不知道它的作用,不知道学了正则表达式到底可以做什么?以至于学了忘,然后忘记了又继续学,做了很多无用功。今天,我就带大家来感受一下正则表达式的强大魅力吧!
现在假设你使用爬虫代码爬取了市场职位信息,具体内容如下所示:

Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18满员

现在,我们的需求是,我们要写一段程序,要从这些爬取到的文本中抓取所有职位的薪资,具体输出如下所示:

2
2.5
1.3
1.1
2.8
2.5

很明显,则要求是对字符串进行处理,如果使用我们的Python基础来实现,具体代码如下所示:

content = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18满员
'''

# 将文本按行存储到列表中
lines = content.splitlines()
for line in lines:
#     查找万/元的位置索引
    pos2 = line.find('万/月')
    if pos2 < 0:
        #查找万/每月的位置索引
        pos2 = line.find('万/每月')
        if pos2 < 0:
            continue

    # 找到数字开始的位置pos1
    idx = pos2-1
    while line[idx].isdigit() or line[idx] == '.':
        idx = idx-1
    pos1 = idx + 1
    print(line[pos1:pos2])

上述是我们使用Python基础,通过一段比较复杂的逻辑实现的提取并输出职位的薪资的程序。但是我想告诉你,如果使用正则表达式,程序代码的规模将大大减少,这里先展示一些如何使用正则来完成该需求,具体正则表达式的代码如下所示:

content = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18满员
'''

import re
for one in  re.findall(r'([d.]+)万/每{0,1}月', content):
    print(one)

怎么样?是不是代码量大大减少,有没有勾起你学习正则表达式的欲望呢?下面就让我们真正走进正则表达式的语法世界吧!对了,这里还向大家推荐一个验证正则表达式的优质外国网站国外正则表达式验证网站,在之后的学习过程中,每当我们编写完成一个正则表达式,不要急着运行程序,先把正则表达式在该网站进行验证,查看匹配结果,如果没问题然后在运行程序,它可以帮助我们排错和进一步提高我们编码的效率。

2.正则表达式的语法

正则表达式是一种文本模式,它包括普通字符与特殊字符,普通字符包括普通的中英文字符,例如python,中国之类的,而特殊字符包括. * + ? [ ] ^ $ { } | ( ),下面我带大家来分别介绍一下它各自的含义,具体如下表所示:

表达式描述
.匹配任何单个字符,除了换行符’/n’
*匹配前面的子表达式任意次,包括0次
+表示匹配前面的子表达式一次或多次,不包括0次
{m,n}表示匹配前面的子表达式至少m次,最多n次
表示转义字符
[]匹配几个字符之一
^匹配字符串的开头
$匹配字符串的结尾
()将匹配到的字符串进行组选择
下面对特殊字符的具体用法做进一步分解释,具体如下所示:
. 表示要匹配除了换行符之外的任何单个字符

比如,现在需要从下面的文本中,选出所有的颜色并输出

苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的

很明显,我们可以直接将正则表达式写成

.色

然后去对应的国外验证网站验证正则表达式的正确性,如下图所示:

从上图可以看出有4个匹配结果,那么我们的python代码该如何编写呢?具体如下所示:

import re
content = '''
苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的
'''
p = re.compile(r'.色')
for one in p.findall(content):
    print(one)
# 运行结果如下所示
# 绿色
# 橙色
# 黄色
# 黑色

这里简单说一下,使用正则表达式前需要导包

import re

而compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,通过Pattern对象可以使用各种正则表达式对象的API方法。

*表示匹配前面的子表达式任意次

比如,你要从下面的文本中,选择每行逗号后面的字符串内容,包括逗号本身。

苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,

这样,根据特殊字符*的含义,我们可以很容易写出正则表达式为

,.*

将对应的文本内容与正则表达式带入对应的正则表达式验证网站验证其正确性,具体如下所示:

完成对应需求的python代码如下所示:

content = '''苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,'''

import re
p = re.compile(r',.*')
for one in  p.findall(content):
    print(one)
+表示匹配前面的子表达式一次或多次

特殊字符+与*特别类似,区别就是 +不能匹配前面的子表达式匹配0次。
比如,还是上面的例子,你要从文本中,选择每行逗号后面的字符串内容,包括逗号本身。
但是,添加一个条件, 如果逗号后面 没有内容,就不要选择了。
比如,下面的文本中,最后一行逗号后面 没有内容,就不要选择了。

苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,

面对这样的要求,我们就可以把正则表达式改为

,.+

去网站验证一下,结果如下所示:

需要注意的是:在最后一行,猴子逗号后面没有其它字符了,而+表示至少匹配1次, 所以最后一行没有子串选中。

花括号-匹配指定次数

花括号表示 前面的字符匹配 指定的次数 。
比如 ,下面的文本

红彤彤,绿油油,黑乎乎,绿油油油油

表达式 油{3} 就表示匹配 连续的油字3次
表达式 油{3,4} 就表示匹配 连续的油字至少3次,至多 4 次
如果使用正则表达式

绿油{3,4}


类似于这样匹配指定次数的文本,生活中比较普遍的应用就是从一段文本中提取出长度固定的内容,例如电话号码,身份证号码等信息。

贪婪模式与非贪婪模式

这里先不直接给出贪婪模式与非贪婪模式的定义,而是给出二者的区别!
假设现在我们有一个需求,要从一段文本中中提取出标签,具体的文本如下所示:

source = ''
</pre> 
<p>而我们的目的是想得到一个这样的列表,具体如下所示:</p> 
<pre class="brush:python;toolbar:false">['<html>','<body>','<title>','']
</pre> 
<p>面对此需求,我们根据前面所学习的知识,很快我们就能给出相应的正则表达式为</p> 
<pre class="brush:python;toolbar:false"><.*>
</pre> 
<p>但是事情真的会与我们预期的一致吗?下面就让我们来测试一下。测试的Python代码如下所示:</p> 
<pre class="brush:python;toolbar:false">import re
source = '<html><body><title>'
p = re.compile(r'<.*>')
print(p.findall(source))
</pre> 
<p>按照上面的程序,运行结果却是<br /> <br /> 那么到底怎么回事呢? 原来在正则表达式中, 像*和+这样的特殊字符都是贪婪地,使用他们时,会尽可能多的匹配内容,所以, <.*> 中的 星号(表示任意次数的重复),一直匹配到了 字符串最后的 里面的>。所以才会出现上述现象,要解决这个问题,就需要使用非贪婪模式,也就是在*后面加上 ? ,变成这样 <.*?><br /> 知道问题的根源后,我们对症下药,改变正则表达式为</p> 
<pre class="brush:python;toolbar:false"><.*?>
</pre> 
<p>改变对应的程序为:</p> 
<pre class="brush:python;toolbar:false">import re
source = '<html><body><title>'
p = re.compile(r'<.*?>')
print(p.findall(source))
</pre> 
<p>则运行结果如下所示:<br /> </p> 
元字符的转义 
<p>在我们正则表达式中起重要作用!<br /> 例如,假设我们要从下面的文本中,提取出.前面的全部内容(包括文本与数字),具体文本如下所示:</p> 
<pre class="brush:python;toolbar:false">黄金帅水果的单价是101.77元/斤
红颜草莓20.8元/斤
西瓜1.1元/斤
黄桃10.6元每斤
</pre> 
<p>按照前面所学的知识,我们很容易想到的正则表达式为</p> 
<pre class="brush:python;toolbar:false">.*.
</pre> 
<p>细心的你一定会发现问题所在。因为点是一个 元字符,直接出现在正则表达式中,表示匹配任意的单个字符, 不能表示 . 这个字符本身的意思了。怎么办呢?如果我们要搜索的内容本身就包含元字符,就可以使用 反斜杠进行转义。<br /> 这里我们就应用使用这样的表达式:</p> 
<pre class="brush:python;toolbar:false"> .*.
</pre> 
<p>因为代码类似,这里就不展示了,读者可以自行将前面代码中的正则表达式与文本内容替换即可查看效果!<br /> 更重要的应用就是,如果后面接一些字符,表示匹配 某种类型 的一个字符。<br /> 比如:</p> 
<pre class="brush:python;toolbar:false">d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]
s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [tnrfv]
S 匹配任意一个非空白字符,等价于表达式 [^ tnrfv]
w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_]
W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]
</pre> 
方括号表示匹配几个字符之一 
<p>方括号表示要匹配指定的几个字符之一 。<br /> 比如:<br /> [abc] 可以匹配 a, b, 或者 c 里面的任意一个字符。等价于 [a-c] 。[a-c] 中间的 - 表示一个范围从a 到 c。<br /> 如果你想匹配所有的小写字母,可以使用 [a-z],所有的大写字母就是[A-Z]。<br /> 一些元字符在方括号内失去了魔法,变得和普通字符一样了。比如<br /> [akm.] 匹配 a k m . 里面任意一个字符<br /> 这里 . 在括号里面不在表示 匹配任意字符了,而就是表示匹配 . 这个字符<br /> 如果在方括号中使用 ^ , 表示 非 方括号里面的字符集合。<br /> 假设我们要从当前的文本中选出非数字并打印输出,具体的文本如下所示:</p> 
<pre class="brush:python;toolbar:false">I5lov2e0you
</pre> 
<p>从该文本中提取出所有的非数字并输出,代码如下所示:</p> 
<pre class="brush:python;toolbar:false">import re
content = 'I5lov2e0you'
p = re.compile(r'[^d]')
for one in p.findall(content):
    print(one)
</pre> 
<p>运行效果如下所示:<br /> </p> 
起始位置和单行、多行模式 
<p>^ 表示匹配文本的开头位置。<br /> 正则表达式可以设定 单行模式 和 多行模式<br /> 如果是 单行模式 ,^表示匹配 整个文本 的开头位置。<br /> 如果是 多行模式 ,^表示匹配 文本每行 的开头位置。<br /> $ 表示匹配文本的结尾位置。<br /> 如果是 单行模式 ,$表示匹配 整个文本 的结尾位置。<br /> 如果是 多行模式 ,$表示匹配 文本每行 的结尾位置。<br /> 我们在Python代码中可以设置compile 的第二个参数 re.M ,指明了使用多行模式,<br /> 这里由于很好理解,就不带大家看具体的案例了,有兴趣的小伙伴可以自己测试一下。</p> 
括号-组选择 
<p>很多时候我们通过正则表达式提取到的是一个整体字符串,而我们还要在整体字符串中再一次截取有效的部分,这个时候就需要用到()来进行组选择了。<br /> 组就是把正则表达式匹配的内容里面其中的某些部分 标记为某个组。<br /> 例如,我们需要从下面的文本中提取出人名和对应的电话号码,内容如下所示:</p> 
<pre class="brush:python;toolbar:false">张三,电话号码是12345678914
李四,电话号码是21345678915
王五,电话号码是31245678916
</pre> 
<p>假设我们只能写出下面的正则表达式</p> 
<pre class="brush:python;toolbar:false">.+,.+d{11}
</pre> 
<p>很明显,如果这样写,同时设置为多行模式,则每一行的数据都是全部匹配,但是我们只需要人名和电话号码,这个时候在我们所需要的匹配内容上面加上()即可取出对应的内容,具体的正则表达式如下所示:</p> 
<pre class="brush:python;toolbar:false">(.+),.+(d{11})
</pre> 
<p></p></div>
</div>
<div style="clear: both;"></div>
<div class="author-info fl">
<div><span class="gray">转载请注明:</span>文章转载自 <a href="https://www.mshxw.com/" class="blue">www.mshxw.com</a></div>
<div><span class="gray">本文地址:</span><a href="https://www.mshxw.com/it/1025194.html" class="blue">https://www.mshxw.com/it/1025194.html</a></div>
</div>
<div class="prev fl">
<p>   <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/1025293.html">上一篇  详解析构函数、拷贝构造函数</a>
 </p>
<p>   <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/1025164.html">下一篇  【Python爬虫+数据可视化】国内疫情或将零增长,我们离疫情结束有多远?(世界地图)</a>
  </p>
</div>
<div class="new_tag fl">
</div>
</div>
<div class="new_r fr" style="border-radius:10px;">
<div class="tui fl">
<h3>Python相关栏目本月热门文章</h3>
<ul>
  <li><span>1</span><a href="https://www.mshxw.com/it/1041277.html" title="【Linux驱动开发】设备树详解(二)设备树语法详解">【Linux驱动开发】设备树详解(二)设备树语法详解</a></li>
  <li><span>2</span><a href="https://www.mshxw.com/it/1041273.html" title="别跟客户扯细节">别跟客户扯细节</a></li>
  <li><span>3</span><a href="https://www.mshxw.com/it/1041266.html" title="Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区">Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区</a></li>
  <li><span>4</span><a href="https://www.mshxw.com/it/1041261.html" title="【Java】对象处理流(ObjectOutputStream和ObjectInputStream)">【Java】对象处理流(ObjectOutputStream和ObjectInputStream)</a></li>
  <li><span>5</span><a href="https://www.mshxw.com/it/1041256.html" title="【分页】常见两种SpringBoot项目中分页技巧">【分页】常见两种SpringBoot项目中分页技巧</a></li>
  <li><span>6</span><a href="https://www.mshxw.com/it/1041299.html" title="一文带你搞懂OAuth2.0">一文带你搞懂OAuth2.0</a></li>
  <li><span>7</span><a href="https://www.mshxw.com/it/1041297.html" title="我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍">我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍</a></li>
  <li><span>8</span><a href="https://www.mshxw.com/it/1041296.html" title="【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成">【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成</a></li>
  <li><span>9</span><a href="https://www.mshxw.com/it/1041294.html" title="JavaSE - 封装、static成员和内部类">JavaSE - 封装、static成员和内部类</a></li>
  <li><span>10</span><a href="https://www.mshxw.com/it/1041291.html" title="树莓派mjpg-streamer实现监控及拍照功能调试">树莓派mjpg-streamer实现监控及拍照功能调试</a></li>
  <li><span>11</span><a href="https://www.mshxw.com/it/1041289.html" title="用c++写一个蓝屏代码">用c++写一个蓝屏代码</a></li>
  <li><span>12</span><a href="https://www.mshxw.com/it/1041285.html" title="从JDK8源码中看ArrayList和LinkedList的区别">从JDK8源码中看ArrayList和LinkedList的区别</a></li>
  <li><span>13</span><a href="https://www.mshxw.com/it/1041281.html" title="idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目">idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目</a></li>
  <li><span>14</span><a href="https://www.mshxw.com/it/1041282.html" title="在openwrt使用C语言增加ubus接口(包含C uci操作)">在openwrt使用C语言增加ubus接口(包含C uci操作)</a></li>
  <li><span>15</span><a href="https://www.mshxw.com/it/1041278.html" title="Spring 解决循环依赖">Spring 解决循环依赖</a></li>
  <li><span>16</span><a href="https://www.mshxw.com/it/1041275.html" title="SpringMVC——基于MVC架构的Spring框架">SpringMVC——基于MVC架构的Spring框架</a></li>
  <li><span>17</span><a href="https://www.mshxw.com/it/1041272.html" title="Andy‘s First Dictionary C++ STL set应用">Andy‘s First Dictionary C++ STL set应用</a></li>
  <li><span>18</span><a href="https://www.mshxw.com/it/1041271.html" title="动态内存管理">动态内存管理</a></li>
  <li><span>19</span><a href="https://www.mshxw.com/it/1041270.html" title="我的创作纪念日">我的创作纪念日</a></li>
  <li><span>20</span><a href="https://www.mshxw.com/it/1041269.html" title="Docker自定义镜像-Dockerfile">Docker自定义镜像-Dockerfile</a></li>
</ul>
</div>
</div>
</div>
<!-- 公共尾部 -->
<div class="link main">
<div class="link_tit">
<span class="on">热门相关搜索</span>
</div>
<div class="link_tab">
<div class="link_con">
<a href="http://www.mshxw.com/TAG_1/luyouqishezhi.html">路由器设置</a>
<a href="http://www.mshxw.com/TAG_1/mutuopan.html">木托盘</a>
<a href="http://www.mshxw.com/TAG_1/baotamianban.html">宝塔面板</a>
<a href="http://www.mshxw.com/TAG_1/shaoerpython.html">儿童python教程</a>
<a href="http://www.mshxw.com/TAG_1/xinqingdiluo.html">心情低落</a>
<a href="http://www.mshxw.com/TAG_1/pengyouquan.html">朋友圈</a>
<a href="http://www.mshxw.com/TAG_1/vim.html">vim</a>
<a href="http://www.mshxw.com/TAG_1/shuangyiliuxueke.html">双一流学科</a>
<a href="http://www.mshxw.com/TAG_1/zhuanshengben.html">专升本</a>
<a href="http://www.mshxw.com/TAG_1/wodexuexiao.html">我的学校</a>
<a href="http://www.mshxw.com/TAG_1/rijixuexiao.html">日记学校</a>
<a href="http://www.mshxw.com/TAG_1/xidianpeixunxuexiao.html">西点培训学校</a>
<a href="http://www.mshxw.com/TAG_1/qixiuxuexiao.html">汽修学校</a>
<a href="http://www.mshxw.com/TAG_1/qingshu.html">情书</a>
<a href="http://www.mshxw.com/TAG_1/huazhuangxuexiao.html">化妆学校</a>
<a href="http://www.mshxw.com/TAG_1/tagouwuxiao.html">塔沟武校</a>
<a href="http://www.mshxw.com/TAG_1/yixingmuban.html">异形模板</a>
<a href="http://www.mshxw.com/TAG_1/xinandaxuepaiming.html">西南大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zuijingpirenshengduanju.html">最精辟人生短句</a>
<a href="http://www.mshxw.com/TAG_1/6bujiaonizhuihuibeipian.html">6步教你追回被骗的钱</a>
<a href="http://www.mshxw.com/TAG_1/nanchangdaxue985.html">南昌大学排名</a>
<a href="http://www.mshxw.com/TAG_1/qingchaoshierdi.html">清朝十二帝</a>
<a href="http://www.mshxw.com/TAG_1/beijingyinshuaxueyuanpaiming.html">北京印刷学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beifanggongyedaxuepaiming.html">北方工业大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijinghangkonghangtiandaxuepaiming.html">北京航空航天大学排名</a>
<a href="http://www.mshxw.com/TAG_1/shoudoujingjimaoyidaxuepaiming.html">首都经济贸易大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguochuanmeidaxuepaiming.html">中国传媒大学排名</a>
<a href="http://www.mshxw.com/TAG_1/shoudoushifandaxuepaiming.html">首都师范大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguodezhidaxue(beijing)paiming.html">中国地质大学(北京)排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingxinxikejidaxuepaiming.html">北京信息科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongyangminzudaxuepaiming.html">中央民族大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingwudaoxueyuanpaiming.html">北京舞蹈学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingdianyingxueyuanpaiming.html">北京电影学院排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguohuquxueyuanpaiming.html">中国戏曲学院排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeizhengfazhiyexueyuanpaiming.html">河北政法职业学院排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeijingmaodaxuepaiming.html">河北经贸大学排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinzhongdeyingyongjishudaxuepaiming.html">天津中德应用技术大学排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinyixuegaodengzhuankexuejiaopaiming.html">天津医学高等专科学校排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinmeishuxueyuanpaiming.html">天津美术学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinyinlexueyuanpaiming.html">天津音乐学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjingongyedaxuepaiming.html">天津工业大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijinggongyedaxuegengdanxueyuanpaiming.html">北京工业大学耿丹学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingjingchaxueyuanpaiming.html">北京警察学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinkejidaxuepaiming.html">天津科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingyoudiandaxue(hongfujiaoou)paiming.html">北京邮电大学(宏福校区)排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingwanglaozhiyexueyuanpaiming.html">北京网络职业学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingdaxueyixuebupaiming.html">北京大学医学部排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeikejidaxuepaiming.html">河北科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeidezhidaxuepaiming.html">河北地质大学排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeitiyoxueyuanpaiming.html">河北体育学院排名</a>
</div>
</div>
</div>
<div class="footer">
<div class="dl_con">
<div class="width1200">
<dl>
<dt>学习工具</dt>
<dd><a href="https://www.mshxw.com/tools/algebra/" title="代数计算器">代数计算器</a></dd>
<dd><a href="https://www.mshxw.com/tools/trigonometry/" title="三角函数计算器">三角函数</a></dd>
<dd><a href="https://www.mshxw.com/tools/analytical/" title="解析几何">解析几何</a></dd>
<dd><a href="https://www.mshxw.com/tools/solidgeometry/" title="立体几何">立体几何</a></dd>
</dl>
<dl>
<dt>知识解答</dt>
<dd><a href="https://www.mshxw.com/ask/1033/"  title="教育知识">教育知识</a></dd>
<dd><a href="https://www.mshxw.com/ask/1180/"  title="百科知识">百科知识</a></dd>
<dd><a href="https://www.mshxw.com/ask/1155/"  title="生活知识">生活知识</a></dd>
<dd><a class="https://www.mshxw.com/ask/1199/"  title="常识知识">常识知识</a></dd>
</dl>
<dl>
<dt>写作必备</dt>
<dd><a href="https://www.mshxw.com/zuowen/1128/" title="作文大全">作文大全</a></dd>
<dd><a href="https://www.mshxw.com/zuowen/1130/" title="作文素材">作文素材</a></dd>
<dd><a href="https://www.mshxw.com/zuowen/1132/" title="句子大全">句子大全</a></dd>

<dd><a href="https://www.mshxw.com/zuowen/1154/" title="实用范文">实用范文</a></dd>
</dl>
<dl class="mr0">
<dt>关于我们</dt>
<dd><a href="https://www.mshxw.com/about/index.html" title="关于我们" rel="nofollow">关于我们</a></dd>
<dd><a href="https://www.mshxw.com/about/contact.html" title="联系我们" rel="nofollow">联系我们</a></dd>
<dd><a href="https://www.mshxw.com/sitemap/" title="网站地图">网站地图</a></dd>
</dl>
<div class="dl_ewm">
<div class="wx"> <img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/gzh.jpg" alt="交流群">
<p>名师互学网交流群</p>
</div>
<div class="wx"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/weixin.jpg" alt="名师互学网客服">
<p>名师互学网客服</p>
</div>
</div>
</div>
</div>
<div class="copyright">
<p>名师互学网 版权所有 (c)2021-2022      ICP备案号:<a href="https://beian.miit.gov.cn" rel="nofollow">晋ICP备2021003244-6号</a>
 </p>
</div>
</div>
<!-- 手机端 -->
<div class="m_foot_top">
<img src="https://www.mshxw.com/foot.gif" width="192" height="27" alt="我们一直用心在做"><br/>
<a href="https://www.mshxw.com/about/index.html">关于我们</a>
<a href="https://www.mshxw.com/archiver/">文章归档</a>
<a href="https://www.mshxw.com/sitemap">网站地图</a>
<a href="https://www.mshxw.com/about/contact.html">联系我们</a>
<p>版权所有 (c)2021-2022 MSHXW.COM</p>
<p>ICP备案号:<a href="https://beian.miit.gov.cn/" rel="nofollow">晋ICP备2021003244-6号</a></p>
</div>
<div class="to_top" style="display:none;"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/to_top.png"></div>
<!--广告!-->
<script type="text/javascript" src="https://www.mshxw.com/skin/sinaskin//kaotop/js/top.js"></script>
<script src="https://www.mshxw.com/skin/sinaskin//kaotop/js/fixed.js" type="text/javascript"></script>
<!--头条搜索!-->
<script>
(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?018f42187355ee18d1bfcee0487fc91a76ac6319beb05b7dc943033ed22c446d3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
</script>
<!--头条搜索结束!-->
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?e05fec1c87ee5ca07f1ce57d093866c4";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
</div>
</div>
<script type="text/javascript">
$(".alert_kf").click(function() {
      mantis.requestChat();
 });
</script>
<script type="text/javascript">
var mySwiper_weixin = new Swiper('.pc_swiper_weixin', {
autoplay: 3000, //可选选项,自动滑动
loop: true,
speed: 1000,
pagination: '.swiper-pagination',
paginationClickable: true,
})
</script>
<script type="text/javascript">
$(function() {
$(window).scroll(function() {
if ($(window).scrollTop() > 100) {
$(".to_top").fadeIn(1000);
} else {
$(".to_top").fadeOut(1000);
}
});
$(".to_top").click(function() {
if ($('html').scrollTop()) {
$('html').animate({
scrollTop: 0
}, 300);
return false;
}
$('body').animate({
scrollTop: 0
}, 300);
return false;
});
});
</script>
</body>
</html>