Python正则表达式,看完这篇文章就够了!

Python正则表达式详解 1. 正则表达式简介on简单翻译为”有规则的表达式“,即该表达式是一条规则,正则表达式引擎能够根据这条规则,在字符串中寻找所有符合规则的部分-》正则表达式是一个特殊的字符序列,方便检查一个字符串是否与某种模式匹配-》Python 自1.5版本起增加了re 模块(标准库),Python通过re模块提供对正则表达式的支持。 阅读详情

玩转正则表达式

本文中介绍的是主要是 3 个知识点:

  • 正则表达式的相关知识

  • Python的中 re 模块,主要是用来处理正则表达式

  • 一个利用 re 模块通过正则表达式来进行网页数据的爬取和存储

使用的系统 Python 版本和其他环境分别如下:

  • npython 3.7.5

  • MacOS

  • jupyter notebook

  • re   # re 模块

  • requests 2.23.0  # 发送请求

1、正则表达式

1.1 正则表达式及作用

正则表达式的英文是 regular expression,通常简写为 regex、regexp 或者RE,属于计算机领域的一个概念。

正则表达式的主要作用是被用来进行文本的检索、替换或者是从一个串中提取出符合我们指定条件的子串,它描述了一种字符串匹配的模式 pattern 。

目前正则表达式已经被集成到了各种文本编辑器和文本处理工具中。

1.2 应用场景

  • 验证:比如在网站中进行表单提交时,进行用户名及密码的验证

  • 查找:从给定的文本信息中进行快速高效地查找与分析字符串

  • 替换:将我们指定格式的文本进行查找,然后将指定的内容进行替换

1.3 网站

在这里介绍几个用来学习和测试正则表达式的网站:

  1. 菜鸟教程-正则表达式

https://www.runoob.com/regexp/regexp-tutorial.html

  1. 正则表达式在线测试工具

https://tool.oschina.net/regex/

  1. GoRegex.cn

https://goregex.cn/

  1. 官方re模块学习

https://docs.python.org/zh-cn/3/library/re.html

  1. 正则表达式30分钟入门教程

https://deerchao.cn/tutorials/regex/regex.htm#mission

1.4 常用字符功能

先介绍常用正则表达式中几种特殊字符的功能:

字符类

字符含义例子
.匹配任意一个字符ab.可以匹配abc或者abd
[ ]匹配括号中的任意1个字符[abcd]可以匹配ab、bc、cd
-在[ ]内表示的字符范围内进行匹配[0-9a-fA-F]可以匹配任意一个16进制的数字
^位于[ ]括号内的开头,匹配除括号中的字符之外的任意1个字符[^xy]匹配xy之外的任意一个字符,比如[^xy]1可以匹配A1、B1但是不能匹配x1、y1
数量限定符

字符含义例子
?匹配前面紧跟字符的0次或者1次[0-9]?,匹配1、2、3
+匹配前面紧跟字符的1次或者多次[0-9]+,匹配1、12、123等
*匹配前面紧跟字符的0次或者多次[0-9]*,不匹配或者12、123
{N}匹配前面紧跟字符精确到N次[1-9][0-9]{2},匹配100到999的整数,{2}表示[0-9]匹配两个数字
{,M}匹配前面紧跟字符最多M次[0-9]{,1},指的是最多匹配0-9之间的1个整数,相当于是0次或者1次,等价于[0-9]?
{N,M}匹配前面紧跟字符的至少N次,最多M次[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3},匹配IP地址,其中.号是特殊字符,需要使用转义字符\
位置相关

字符含义例子
^匹配开头的位置;通过\A^hello  匹配hello开头的字符内容
$匹配结束的位置同\Z;$  匹配一行结尾的;符号   ^$匹配空行
<匹配单词开头的位置<th  匹配…this但是不能匹配ethernet等
>匹配单词结尾的位置p>  匹配leap等,但是不能匹配parent、sleepy等不是p结尾的单词
\b匹配单词开头或结尾的位置\bat 匹配…at…,但是不能匹配cat、atexit、batch(非at开头)
\B匹配非单词开头或者结尾的单词\Bat匹配battery,但是不能匹配attend/hat等以at开头的单词
特殊字符

字符含义例子
\转义字符,保持后面字符的原义,使其不被转义\. 输出.
( )将表达式的一部分括起来,可以对整个单元使用数量限定符,匹配括号中的内容([0-9]{1,3}\.){3}[0-9]{1,3}表示将括号内的内容匹配3次
|连接两个子表达式,相当于或的关系n(o|either)匹配no或者neither
\d数字字符相当于是[0-9]
\D非数字字符相当于是[^0-9]
\w数字字母下划线[a-zA-Z0-9_]
\W非数字字母下划线,匹配特殊字符[^\w]
\s空白区域[\r\t\n\f]表格、换行等空白区域
\S[^\s]非空白区域

2、re 模块

2.1 re 模块简介

在 Python 中主要是利用 re 模块进行正则表达式的处理,涉及到 4 个常用的方法:

  • re.match()

  • re.search()

  • re.findall()

  • re.sub()

  • re.split()

5 个方法的基本使用语法是:

import re   # 使用之前先进行导入re模块
re.match(pattern, string, flags)   # match方法为例

上面参数的说明:

参数描述
pattern匹配的正则表达式
string要匹配的字符串
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

2.2 标志位 flags

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志,如 re.I | re.M 被同时设置成 I 和 M 标志:

修饰符描述
re.I忽略大小写(常用)
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予更灵活的格式,以便将正则表达式写得更易于理解。

2.3 match

从指定字符串的开始位置进行匹配。开始位置匹配成功则继续匹配,否则输出None。

该方法的结果是返回一个正则匹配对象,通过两个方法获取相关内容:

  • 通过 group() 来获取内容

  • 通过 span() 来获取范围:匹配到字符的开始和结束的索引位置

开始位置没有匹配成功,返回 None:

存在换行的字符串内容,使用 re.S:

group() 方法获取内容的时候,索引符号从 1 开始:

2.4 search

re.search 方法扫描整个字符串,返回的是第一个成功匹配的字符串,否则就返回 None

group(N) 中的参数N不能超过正则表达式中括号的个数,若超过则报错:

2.5 findall

re.findall() 是扫描整个字符串,通过列表形式返回所有符合的字符串

注意:re.search 是返回第一个符合要求的字符

如果存在多个 .*? ,则返回的内容中使用列表中嵌套元组的形式:

2.6 sub

re.sub 方法是用来替换字符串中的某些内容

  • 直接替换

  • 通过函数替换

指定具体的替换内容:将空格替换成短横线

略微复杂的替换

2.7 split

用法

主要适用于将字符串进行分割:

re.split(pattern, string,maxsplit=0,flags=0)

用 pattern 分开 string 。如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里。

如果 maxsplit 非零, 最多进行 maxsplit 次分隔, 剩下的字符全部返回到列表的最后一个元素。

如何理解是否保留匹配项

第二种写法就是保留了匹配项

2.8 贪婪模式与非贪婪模式

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为。

贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配;而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配

我们在正则表达式中经常会使用 3 个符号:

  • 点 . :表示匹配的是除去换行符之外的任意字符

  • 问号 ? :表示匹配 0 个或者 1 个

  • 星号 *:表示匹配 0 个或者任意个字符

贪婪模式与非贪婪模式:

  • .*?  非贪婪模式

  • .*   贪婪模式

看一个例子来比较 re 模块中两种匹配方式的不同:

  1. 在上面的非贪婪模式中,使用了问号 ?,当匹配到 aaaacb 已经达到了要求,停止第一次匹配;接下来再开始匹配到 ab ;再匹配到 adceb ;所以存在多个匹配结果

  2. 在贪婪模式中,程序会找到最长的那个符合要求的字符串

关于正则表达式中贪婪和非贪婪模式的详解,请参考文章 https://www.cnblogs.com/520yang/articles/7473596.html,写的非常清楚。

3、基于正则的爬虫

字符串是在我们编程中涉及最多的一种数据结构,对字符串进行操作的需求几乎无处不在。

比如我们编写好了爬虫程序,在得到了网页的源码之后,怎么从茫茫数据中提取出来我们指定的数据?这个通过正则表达式提取就是其中的方法之一。

接下来讲解的通过 re 模块来爬取某个网站的内容。

3.1 网页结构

分析的网页结构和源码的相关对应信息:

  1. 在每个网页中有 32 篇小说

  1. 这 32 篇小说的信息存在于 32 个 <li></li> 对中:

  1. 每篇信息存在一个 li 中,比如第一篇:

  1. 源码和网页中的对应位置

3.2 网页地址

第一页的地址是  http://www.quanshuwang.com/list/1_1.html  ,第二页是 http://www.quanshuwang.com/list/1_2.html  ,网页地址的规律

for i in range(1, 1156):  # 总共1155页
  url = "http://www.quanshuwang.com/list/1_{}.html".format(i)

3.3 爬取信息

导入库爬虫中需要的库

import re  # 解析数据
import requests # 发送请求
import csv  # 存入数据
import pandas as pd
爬取第一页

爬取第一页的内容进行测试

url = "http://www.quanshuwang.com/list/1_1.html"  # 第一页
headers = {"User-Agent": "自己的请求头"}
response = requests.get(url=url, headers=headers)   # 得到响应
res = response.content.decode('gbk', 'ignore')  # 获取源码,实际编码是gbk
res  

下面进行 3 个字段信息的爬取:

标题title

title 是 li 标签对中唯一的,所以可以直接获取双引号中的内容,最后检验下长度刚好是 32 :

作者 author

author 是源码中唯一的内容,直接通过 author 后面的内容进行获取,检验长度也是 32

在 author 和 em 标签中进行限制来获取内容

简介 substract

对简介的提取分为两个部分:正文部分+更多。因为有些小说没有简介,只有更多 2 个字,所以需要特殊下

  1. 通过元组的形式单独提取出两个信息

  1. 将两个信息进行合并,放到一个大列表中,同时检验长度仍然是 32

3.4 完整代码

下面是完整的源码,包含:

  • 访问链接获取源码数据

  • 利用 re 模块解析数据

  • 利用 csv 模块保存数据

  • 读取数据


万水千山总是情,点个 ???? 行不行。




菜鸟编程大本营,现已正式上线!
接下来我们将会在该公众号上,专注为大家分享Python,Java,Go,前端开发等优质的学习资源和技术,分享一些程序员圈的新鲜趣事。爆款文案“裂开了,苦涩了,翻白眼”!我用Python画出微信新出的表情包
吃瓜群众,我用五行Python代码让微博热点动起来!抖音创始人张一鸣:10 年面试 2000 人,我发现混的好的人,全都有同一个特质
卧槽!没想到,用Python竟能做五仁月饼
Python 初学者进阶的九大技能
终于,Flask 迎来了真正的对手!
7个最佳的学习Python编程的开源库3287亿!我用20行Python代码预测双十一成交额,猜中送红包哦
关注菜鸟编程本营,从菜鸟进阶高手
点这里,获取新手福利
【Python】正则表达式(非常详细) 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(视则)的文本。(1)测试字符串的某个模式,即数据有效性验证(查找)(2)实现按照某种规则替换文本(3)根据模式匹配从字符串中提取一个子字符串(爬虫)原子(普通字符,如英文字符)、元字符(有特殊功能的字符)、以及模式修正字符组成。注意:一个正则表达式中至少包含一个原子。RegexBuddy。 阅读详情

相关推荐

python中正则表达式的使用详解(相当全面)

正则表达式是什么?它是约束字符串匹配某种形式的规则#正则表达式有什么用?1.检测某个字符串是否符合规则.比如:判断手机号,身份证号是否合法2.提取网页字符串中想要的数据.比如:爬虫中,提取网站天气,信息,股票代码,星座运势等具体关键字正则只能匹配字符串格式,不能判断逻辑,判断逻辑要通过代码去实现

景天科技苑 1万+

Python 正则式学习笔记

1.  Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.  re模块的基本函数 2.1使用compile加速 2.2 match和search 2.3 finditer 2.4 字符串的修改与替换 3.  更深入的了解re的组与对象 3.1编译后的Pattern对象 3.2

whycadi的专栏 6万+

2021年全国职业院校技能大赛高职组网络系统管理赛项

S1 Ruijie(config)#switch virtual domain 1 Ruijie(config-vs-domain)#switch 1 Ruijie(config-vs-domain)#switch 1 priority 150 Ruijie(config-vs-domain)#switch 1 description S1 Ruijie(config-vs-domain)#exit Ruijie(config)#vsl-port Ruijie(config-vsl-port)#po

bfq05234214的博客 1133

python的正则表达式

正则表达式 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。 上面都是官方的说明,通过事先规定好一些特殊字符的匹配规则,然后利用这些字符进行组合来匹配各种复杂的字符串场景。比如现在的爬虫和数据分析,字符串校验等等都需要用到正则表达式来处理数

weixin_51398385的博客 3614

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

TSC条码打印机C#例程(tsclib.dll调用) 【转】

//----program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using System.Runtime.InteropServices;public class TSCLIB_DLL{[DllImport("TSCLIB.dll", EntryPoint = "abou...

weixin_33843947的博客 2441

python正则表达式 16进制数字_Python正则表达式,看完这篇文章就够了!

玩转正则表达式本文中介绍的是主要是 3 个知识点:正则表达式的相关知识Python的中 re 模块,主要是用来处理正则表达式一个利用 re 模块通过正则表达式来进行网页数据的爬取和存储使用的系统 Python 版本和其他环境分别如下:npython 3.7.5MacOSjupyter notebookre # re 模块requests 2.23.0 # 发送请求1、正则表达式1.1 正则表达式...

weixin_35057726的博客 2857

libero烧录信号抓取

提示:如果改了东西需要重新烧录,需要把这两个界面都关闭再libero打开。两个红色的要关闭掉。然后返回libero开始烧录,观测信号(如果只烧录观测从这一步开始就行)等到下面的messige出现以下信息表示run好了。在下图中右侧可以自己设置,设置完之后记得保存一下。run一下,耐心等待,有警告就ok,run完之后。run成功会变绿色,然后点下面的这个看波形。设置抓取信号:在libero打开。打开的就是烧录界面,直接run。

qq_34047965的博客 1422

Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#

正则表达式简介 正则表达式,是一个特殊的字符序列,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp 或RE),本质而言是一种小型的,高度专业化的编程语言。 Python 自1.5版本起增加了re 模块,re 模块使Python语言拥有全部的正则表达式功能。 正则语法表 关于正则语法表,别想其他的都背过就行了。不管你是python还是其他...

华为云官方博客 8689

开源处理器Rocket的分支预测机制研究与性能评估(二)

Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。

leishangwen的专栏 5691

华为无线AP+AC(ensp)

VLAN 100--192.168.100.0/24为AP的管理IP地址VLAN10--192.168.10.0/24为无线用户获取的IP地址在DHCP Server(LSW3)上查看地址分配情况。

abcdlalal的博客 1万+

python正则表达式,看完这篇文章就够了...

作者:王翔丨公众号:清风Python正则的噩梦...正则表达式这东西,你说它简单它也简单,你说它难吧,确实不容易。为什么?这东西就是死记硬背的。背过了相关的语法,使用起来就so easy...

简说Python的博客 723

《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

当数据具有资产属性之后,数据便可以直接或者间接地为公司、为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易。 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战,主要包括: 数据的质量、价格如何定义 在合法合规的前提下,数据的交易如何确保不会泄露用户的隐私 如何构建合理的激励机制来鼓励更多的参与方加入数据交易市场中 大数据交易 数据交易的定义 数据交易是指一种对数据进行买卖的行为,大数据交易由三方共同参与,分别为数据提供方、大数据交易平台和数据需求方:

IEEE802_11的博客 3433

掌握Mongodb,看完这篇文章就够了

MongoDB是一种非关系型数据库(NoSQL),它以灵活的文档存储格式(BSON)和强大的查询能力而闻名,类似json,不支持表连接。db.teacher.find().sort({"字段":1, "字段":-1})db.teacher.find({"name":/^t/}) name以t开头。db.teacher.find({"name":/.\d/}) 数字。或者 {$or:[{"age":20},{"age":15}]}$gt > find({"字段":{$gt : 20}})

weixin_53757879的博客 1245

YOLO26改进策略【卷积层】| CVPR 2025 频率动态卷积 FDConv 频域分权重提多样性 + 双调制降冗余,增强特征表征能力

本文记录的是利用FDConv 算子改进 YOLOv11 的卷积层特征提取层。(Frequency Dynamic Convolution)通过傅里叶域权重划分与空间-频率双调制机制结合,实现YOLOv11特征提取中频率多样化的动态卷积与空间自适应的频带调制。本文利用算子,通过傅里叶不相交权重生成频率差异化的并行卷积核以丰富特征表达,再通过核空间调制和频带调制结合局部-全局信息、适配图像空间异构性,同时依托固定参数预算实现轻量化设计,对YOLOv11中目标的低频语义特征与高频细节/边界特征进行针对性增强、抑制

Limiiiing的博客 476

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

掌握MongoDB,看完这篇文章就够了!!!

1. MongoDB简介MongoDB是一种NoSQL数据库管理系统,采用文档数据库模型,由MongoDB Inc.开发并发布。作为一个面向文档的数据库,MongoDB的数据存储形式类似于JSON对象,适合存储结构化、半结构化和非结构化数据。: MongoDB使用了类似于JSON格式的文档存储数据,这意味着每个文档可以具有不同的结构,而不像传统的关系型数据库需要遵循固定的表结构。: MongoDB具有出色的性能特性,支持快速的查询操作和数据读写。

m0_63865649的博客 2486

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

看完这篇文章,相信我,你已经掌握正则表达式了!

前言 如果说什么是我学习编程来最好用,最常用的知识点,那应该就是正则表达式了。严谨的说,正则表达式并不是一门编程语言,也不是为了一种编程语言而服务的知识。但他确实足够好用,应用也足够广泛。 例如可以在文本中提取规则的电话号码,电子邮箱。在office中的通配符也是正则表达式哦,这样在office中做规则的搜索和替换,也是能极高的提升工作效率。 正则表达式在爬虫中也经常使用到,例如只需要简单的几行代码,就可以获取h1标签下的所有内容。 importre html=''' <h1&gt...

jia8267166的博客 192

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python正则表达式从入门到精通,看这篇就够了!

Python正则表达式从入门到精通教程

weixin_73953650的博客 2046

python正则表达式修饰符_python正则表达式,看完这篇文章就够了...

今天讲什么?今天以为大学同学微信聊,说最近在看我的公众号,她是国企汽车制造业的,但也要用python进行数据分析...之前看了往期的python字符串操作内容,里面说到了正则表达式,想学习一下... 正则表达式这东西,你说它简单它也简单,你说它难吧,确实不容易。为什么?这东西就是死记硬背的。背过了相关的语法,使用起来就so easy。但记不熟语法,就犯难了。网上关于python正则的帖子很多,我再...

weixin_39942637的博客 190

在Python中遇到字符串和数字要分开提取怎么办?这篇文章看完必会!

嘿,朋友们!你有没有遇到过这样的情况:手里拿着一堆文本数据,却苦于找不到其中的数字信息?别担心,今天咱们就来聊聊如何在Python中轻松提取字符串里的数字。无论是处理日志文件、分析用户评论,还是抓取网页数据,掌握这个小技巧都能让你的工作变得事半功倍。别再让繁琐的数据处理任务绊住你的脚步,跟着我一起来学习这个简单又实用的Python技能吧!

小白的大数据之旅的博客 2019

学会python正则表达式,这2篇文章就够了(二)

学会python正则表达式,这2篇文章就够了(一) 书接上文,我们来介绍一下分组。 分组、组号调用与起别名 如下图所示,我们想匹配123456或者123556,因此我们将正则表达式设置为1234|556,但结果却和我们所想的不一样。这是因为‘|’会自动的将其左右各分为一部分,分别匹配,因此对于a字符串匹配到了1234而b中既没有1234又没有556,因此返回为空。这时候要想按我们所想的实现,就需要用括号进行分组了,加上括号后,‘|’会将4和5各自作为一部分,这样就可以匹配到123456或者123556

梅菜扣肉 408
上一篇: 再夺AI专业全球冠军!清华力压CMU夺得CSRankings高校AI领域第一
下一篇: 爆了!周末太无聊,来玩《合成大西瓜》吧!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值