正则表达式基础

掌握正则表达式:从基础到实用示例 本文介绍了正则表达式在Java编程中的基本概念和应用。首先,简要解释了正则表达式的语法规则,随后通过具体示例展示了如何在Java中使用正则表达式进行模式匹配、字符串替换和数据验证。通过理解和掌握正则表达式,开发者可以高效地处理复杂的字符串操作,提高代码的灵活性和可读性。希望本文能为读者提供有价值的参考,助力在实际开发中更好地利用正则表达式。 阅读详情
  1. 什么是正则表达式
    正则表达式是对字符串操作的一种逻辑公式,就是用实现定义好的一些特定的字符、及这些特定的字符的组合,组成一个“规则字符串“,这个“规则字符串“用来表达对字符串的一种过滤逻辑。
    注意: 正则表达式并不是Python独有的,Python中使用re模块实现。

    元字符描述
    \w匹配字母数字及下划线
    \W匹配非字母数字下划线
    \s匹配任意的空白符
    \S匹配任意非空白符
    \d匹配数字
    \D匹配任意非数字的字符
    .匹配除换行符以外的任意字符
    ^匹配字符串的开始
    $匹配字符串的结束
    *重复零次或更多次
    +重复一次或更多次
    ?重复零次或一次
    {n}重复n次
    {n,}重复n次或更多次
    {n,m}重复n到m次
    ab
    ()匹配括号内的表达式,也表示一个组

在这里插入图片描述
3. re.match()
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配的话,match()就会返回None
语法: re.match(正则表达式,要匹配的字符串,匹配方式)
常用匹配方式: re.I 使匹配对大小写不敏感 re.S 使 . 匹配包括换行在内的所有字符

   import re
   str='www.kaikeba'
   result=re.match('www',str)
   #获取匹配的结果
   print(result.group())
   #获取匹配字符串的长度范围
   print(result.span())
   #re.match() 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配的话,match()就会返回None
   #不在起始位置匹配,返回None
   print(re.match('kaikeba',str))
   #默认大小写是敏感的
   print(re.match('WWW',str))
   #设置匹配模式,忽略大小写
   print(re.match('WWW',str,re.I))
  
   #多种匹配方式
   str2='abc 123 def'
    #常规匹配
    print(re.match('^abc\s\d\d\d\sdef$',str2).group())
    print(re.match('^abc\s\d+\sdef$',str2).group())
    print(re.match('^abc\s\d{3}\sdef$',str2).group())
    #范式匹配
    print(re.match('^abc\s.*\sdef$',str2).group())
    
    print(re.match('^.*$',str2).group())
    #获取指定的字符
    print(re.match('^abc\s(.*)\s(def)$',str2).group(1)) #正则表达式中出现括号就表示你取你想取得内容
    # 通过re.group()获得结果后,如果正则表达式中有括号,则re.group(1)获取的就是第一个括号中匹配的结果
abc 123 def
abc 123 def
abc 123 def
abc 123 def
abc 123 def
('123', 'def')
#贪婪匹配和非贪婪匹配
#贪婪匹配
str3='hello 1234567 world Demo'
result=re.match('^hello.*(\d+).*Demo',str3)#首先满足前面的.*
print(result)
print(result.group(1))
# 这种情况的原因是前面的.*给匹配掉了,前面的.*在这里会尽可能的匹配多的内容,也就是我们所说的贪婪匹配
result=re.match('^hello.*?(\d+).*Demo',str3)#首先满足括号中的(\d+)
print(result)
print(result.group(1))
<re.Match object; span=(0, 24), match='hello 1234567 world Demo'>
7
<re.Match object; span=(0, 24), match='hello 1234567 world Demo'>
1234567
#匹配模式  re.S   re.I (严格大写S、I)
# 很多时候匹配的内容是存在换行的问题的,这个时候的就需要用到匹配模式re.S来匹配换行的内容
content = """hello 123456 world
demo
"""
result =re.match('^he.*?(\d+).*?demo$',content,re.S)
print(result)
print(result.group())
print(result.group(1))
<re.Match object; span=(0, 23), match='hello 123456 world\ndemo'>
hello 123456 world
demo
123456
#转义字符\  (严格'\',不是'/')
# 当我们要匹配的内容中存在特殊字符的时候,就需要用到转义符号\
content= "price is $5.00"
result = re.match('price is \$5\.00',content)
print(result)
print(result.group())
<re.Match object; span=(0, 14), match='price is $5.00'>
price is $5.00
  1. re.search()
    re.search扫描整个字符串返回第一个成功匹配的结果
#re.search()
#re.search扫描整个字符串返回第一个成功匹配的结果,只返回一个结果。
# 所以为了匹配方便,我们会更多的用search,不用match,match必须匹配头部,所以很多时候不是特别方便
import re
html = '''<div id="songs-list">
<h2 class="title">经典老歌</h2>
<p class="introduction">
经典老歌列表
</p>
<ul id="list" class="list-group">
<li data-view="2">一路上有你</li>
<li data-view="7">
<a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
<li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
<li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
<li data-view="5">
<a href="/6.mp3" singer="邓丽君">但愿人长久</a>
</li>
</ul>
</div>'''
result = re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S)
print(result)
print(result.group())
# print(result.group(1))
# print(result.group(2))
<re.Match object; span=(121, 286), match='<li data-view="2">一路上有你</li>\n<li data-view="7">\>
<li data-view="2">一路上有你</li>
<li data-view="7">
<a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
import re
html = '''<div id="songs-list">
<h2 class="title">经典老歌</h2>
<p class="introduction">
经典老歌列表
</p>
<ul id="list" class="list-group">
<li data-view="2">一路上有你</li>
<li data-view="7">
<a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
<li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
<li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
<li data-view="5">
<a href="/6.mp3" singer="邓丽君">但愿人长久</a>
</li>
</ul>
</div>'''
result = re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S)
print(result)
print(result.groups())
print(result.group(1))
print(result.group(2))
<re.Match object; span=(121, 286), match='<li data-view="2">一路上有你</li>\n<li data-view="7">\>
('齐秦', '往事随风')
齐秦
往事随风
  1. re.findall()
    搜索字符串,以列表的形式返回全部匹配的子串
#re.findall()
#搜索字符串,以列表的形式返回全部能匹配的字符串
import re
html = '''<div id="songs-list">
<h2 class="title">经典老歌</h2>
<p class="introduction">
经典老歌列表
</p>
<ul id="list" class="list-group">
<li data-view="2">一路上有你</li>
<li data-view="7">
<a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
<li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
<li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
<li data-view="5">
<a href="/6.mp3" singer="邓丽君">但愿人长久</a>
</li>
</ul>
</div>'''
results=re.findall('<li.*?href="(.*?)".*?singer="(.*?)">(.*?)</a>',html,re.S)
print(results)
print(type(results))
# print(results.group())  错误,列表没有group()P
# print(results.group(1))
# print(results.group(2))
print(results[0])
for value in results:
    print(value)#输出了元组
    print(value[0], value[1], value[2])
[('/2.mp3', '任贤齐', '沧海一声笑'), ('/3.mp3', '齐秦', '往事随风'), ('/4.mp3', 'beyond', '光辉岁月'), ('/5.mp3', '陈慧琳', '记事本'), ('/6.mp3', '邓丽君', '但愿人长久')]
<class 'list'>
('/2.mp3', '任贤齐', '沧海一声笑')
('/2.mp3', '任贤齐', '沧海一声笑')
/2.mp3 任贤齐 沧海一声笑
('/3.mp3', '齐秦', '往事随风')
/3.mp3 齐秦 往事随风
('/4.mp3', 'beyond', '光辉岁月')
/4.mp3 beyond 光辉岁月
('/5.mp3', '陈慧琳', '记事本')
/5.mp3 陈慧琳 记事本
('/6.mp3', '邓丽君', '但愿人长久')
/6.mp3 邓丽君 但愿人长久
  1. re.compile()
    将正则字符串编译成正则表达式对象,以便于复用该匹配模式。
# re.compile()
# 将正则字符串编译成正则表达式对象,以便于复用该匹配模式
import re
html = '''<div id="songs-list">
<h2 class="title">经典老歌</h2>
<p class="introduction">
经典老歌列表
</p>
<ul id="list" class="list-group">
<li data-view="2">一路上有你</li>
<li data-view="7">
<a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
</li>
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
<li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
<li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
<li data-view="5">
<a href="/6.mp3" singer="邓丽君">但愿人长久</a>
</li>
</ul>
</div>'''

pattern = re.compile('<li.*?href="(.*?)".*?singer="(.*?)">(.*?)</a>',re.S)#将正则字符串编译成正则表达式对象
results=re.findall(pattern,html)

print(results)
print(type(results))
for result in results:
    print(result)
    print(result[0], result[1],result[2])
[('/2.mp3', '任贤齐', '沧海一声笑'), ('/3.mp3', '齐秦', '往事随风'), ('/4.mp3', 'beyond', '光辉岁月'), ('/5.mp3', '陈慧琳', '记事本'), ('/6.mp3', '邓丽君', '但愿人长久')]
<class 'list'>
('/2.mp3', '任贤齐', '沧海一声笑')
/2.mp3 任贤齐 沧海一声笑
('/3.mp3', '齐秦', '往事随风')
/3.mp3 齐秦 往事随风
('/4.mp3', 'beyond', '光辉岁月')
/4.mp3 beyond 光辉岁月
('/5.mp3', '陈慧琳', '记事本')
/5.mp3 陈慧琳 记事本
('/6.mp3', '邓丽君', '但愿人长久')
/6.mp3 邓丽君 但愿人长久
  1. re.sub
    替换字符串中每一个匹配的子串后返回替换后的字符串
    语法:re.sub(正则表达式,替换成的字符串,原字符串)
#re.sub
# 替换字符串中每一个匹配的子串后返回替换后的字符串
# 语法:re.sub(正则表达式,替换成的字符串,原字符串)
import re
content='hello 123466 world'
content=re.sub('\d+','',content)
print(content)
hello  world
#有些情况下我们替换字符的时候,还想获取我们匹配的字符串,然后在后面添加一些内容
#需要注意的一个问题是\1是获取第一个匹配的结果,为了防止转义字符的问题,我们需要在前面加上r
import re
content='hello 123466 world'
# content = re.sub('(\d+)','\1 7890',content)
# content = re.sub('(\d+)',r' 7890',content)
content = re.sub('(\d+)',r'\1 7890',content)
print(content)
hello 123466 7890 world

在这里插入图片描述

#贴吧爬虫
#tiebaSpider
import requests
import re
import csv
import pymysql
class TiebaSpider(object):
    def __init__(self,tibaName):
        self.tibaName=tibaName
        self.base_url='https://tieba.baidu.com/f?kw='+tibaName+'&ie=utf-8&pn={}'
        self.headers={
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
        }
        
    #构建请求链接实现翻页
    def get_url_list(self):
        url_list=[]
        for i in range(1):
            url_list.append(self.base_url.format(i*50)) #format
        return url_list
    #请求页面信息
    def get_pageInfo(self,url):
        response=requests.get(url=url,headers=self.headers)
        #print(response.content.decode('utf-8'))
        return self.parse_pageInfo(response.content.decode('utf-8'))
    
    #解析界面
    def parse_pageInfo(self,html):
        pattern=re.compile('<li class=" j_thread_list clearfix".*?<a.*? href="(.*?)".*?title="(.*?)".*?</a>',re.S)
       # print(re.findall(pattern,html))
        return (re.findall(pattern,html))
    #存储到txt中
    def save_to_txt(selfself,info):
        for tuple_value in info:
            info_str='贴子的信息:'+tuple_value[1]+'贴子的链接:https://tieba.baidu.com'+tuple_value[0]+'\n'
            #print(info_str)
            #
            with open('./tieba.txt','a',encoding='utf-8') as f:
                f.write(info_str)
    '''      
    #写入到csv中,导入import csv
    def save_to_csv(self,info): 
        for tuple_value in info:
            #newline默认会有'\r\n'换行符
            #encoding='utf-8-sig,解决中文乱码
            with open('./tieba.csv','a',newline='',encoding='utf-8-sig') as f:
                writer=csv.writer(f)
                writer.writerow(list(tuple_value)) #writerow一行一行去写
         #写入到数据库,导入pymysql
    def save_to_database(self,info):
        #链接数据库
        conn=pymysql.connect(host='localhost',user='root',passwd='123',db='tieba',port=3306,charset='utf8mb4')
        #游标对象(内部包含了很多操作数据库的方法)
        cursor=conn.cursor() 
        #info={('链接'),(文字)...}
        for tuple_value in info:
            #插入数据,构造SQL语句
            sql="insert into tieba_info (info,url) values('{}','{}')".format(tuple_value[1])
            #执行SQL
            cursor.execute(sql)
            #提交事务
            conn.commit()
        
        #关闭游标
        cursor.close()
        #关闭数据库连接
        conn.close()
   '''
    
    #所有的逻辑结构都放在这里面,封装及调用
    def run(self):
        #1.获取链接
        url_list=self.get_url_list()#
        #2.发送请求
        for url in url_list:
            info=self.get_pageInfo(url) 
            #self.save_to_txt(info)
            self.save_to_csv(info)
            #self.save_to_database(info)
if __name__=="__main__":
    tiebaspider=TiebaSpider('lol')
    tiebaspider.run()
告别地图偏移!手把手教你用MapOnline V1.2在ArcGIS里加载无偏谷歌影像和历史影像 本文详细介绍了如何使用MapOnline V1.2插件在ArcGIS中加载无偏谷歌影像和历史影像,解决GIS工程师长期面临的地图偏移问题。通过三步安装配置、无偏影像加载和时空分析功能,提升地理信息数据的精确度和工作效率,特别适用于城市规划、环境监测等场景。 阅读详情

相关推荐

超详细网安学习路线(Day1-Day2)

渗透测试(Penetration Testing),就是一种通过模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。简单来说,就是合法去入侵别人的系统,来帮助其找出漏洞,增强防护能力。

aobulaien001的博客 3390

JS在正则表达式中使用变量

在js中使用正则表达式可以通过两种方式创建 方法1. 正则表达式字面量形式创建,写在两个斜杠之间 var reg = /^\d{3}$/ //验证变量是否是三位数字 reg.test("123") //true 方法2. 构造函数创建正则表达式对象 var re = new RegExp("^\d{3}$") re.test("123") // true 最近有一个...

Seven_miao的博客 2万+

C# 固高板卡(总线型) 操作类

主要功能有:初始化,轴使能,正负方向手动移动,回0,点到点移动,等待移动完成,输入IO数据读取,输出IO控制,清除报警等功能。

StevenChen的博客 572

正则表达式匹配变量

如果给义一个字符串或是数组加入变量,是非常简单的事情,但是我们不能用这种常规思维来给正则表达式加入变量,比如 var param = 3; var reg = "/^[0-9]+"+param+"[a-z]+$/"; ✘ var reg = /^[0-9]+"+param+"[a-z]+$/; ✘ var reg = /^[0-9]+$/+param+/^[a-z]+$/; ✘ 首先不考虑准确性,这写法就怎么看怎么别扭,无论怎么写,都会被当作正则的一部分来处理。 这个时候 构造函数 出场,既然已经定义好的

huiguoyuan的博客 4206

嵌入式硬件中AI硬件设计方法与技巧

嘉立创EDA推出AI助手Kimi插件,为PCB设计提供智能支持。该插件具备四大核心功能:AI问答助手可解答各类电路设计问题;元件查询功能直接展示参数和应用场景;智能分析网表可检测潜在问题;电路图识别能解析图纸结构并提供改进建议。用户需通过扩展插件安装,并配置Kimi API密钥后使用。该工具旨在提升工程师的设计效率,减少查阅资料时间,特别适合项目交接和设计自查场景。

嵌入式技术开发 1872

goahead(嵌入式Web服务器)之文件传输篇

goahead文件上传原理: 使用html form即表单提交文件上传请求,web服务器核心处理接收客户端Post过来的文件数据(注意post的是二进制数据),最后,web服务器把接收到文件数据以二进制格式写到服务器本端存储系统。 goahead文件上传步骤: 1、创建upload.html文件,内容如下: <html> <head> <meta charset="utf-8"/> <title>Upload</title> </head&g

weixin_40732273的博客 3495

07-正则表达式

theme: channing-cyan highlight: a11y-dark 正则表达式 正则表达式 1.初识正则表达式 定义 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 作用 通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。 使用场景 例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配) 比如用户名: /1{3,16}$/ 过滤掉页.

weixin_44941576的博客 811

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

weixin_43567873的博客 1986

正则表达式基础语法大全

正则表达式基础语法 1.普通字符: 字母、数字、汉子、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。 2.简单的转义字符: 3.标准字符集合: - 能够与'多种字符' 匹配的表达式 - 注意区分大小写,大写是相反的意思 4.自定义字符集合: -[ ]方括号匹配方式,能够匹配方括号中任意一个字符 例如:[2-8a...

大学生小汪的成长博客 6万+

PD详解—第一章—Type-C连接

Type-C连接 今天大师匈下班比较早,再给大家侃一侃PD,希望大家支持。 PD和Type-c的关系 首先讲一下PD快充的实现步骤,本文主要是Source端(电源),Sink端的差不多也一样,只是策略不同而已。 TypeC连接-->广播电源能力Source capbility(数据交互)->打电压电流->等待其他指令。 所以typec连接是第一步,很多人会从字面意思理解typec连接,这不就是把线给插上去就好了吗? 不知道有没有优秀的同学想到正确答案; 正确答案:typec连接的本质是为

大师匈的博客 1万+

华为OD机试真题 新系统 2026-04-22 Python&JS 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 317

正则表达式的基础使用

正则表达式的基础使用 开发工具和关键技术:Adobe Dreamweaver CC 2017、弹性布局 作者:袁何恩 撰写时间:2019年2月20日 今天,和大家分享的技术是正则表达式的基础使用。 正则表达式在我现在的所学知识的理解下是对字符串筛选的方式,把得到的字符串通过正则表达式的条件,匹配出自己想要的字符串。就像是找规律一样。 现在给大家介绍正则表达式的基础代码。 正则表达式的代码有很多,我...

weixin_44561769的博客 201

LeRobot X-VLA:首个适用于任意机器人、任意任务的软提示机器人基础模型

X-VLA是一种基于软提示的视觉-语言-动作模型,通过可学习嵌入向量编码不同机器人配置,实现跨平台统一控制。该框架采用两阶段训练:先在29万次多平台任务中学习通用策略,再通过微调少量参数(仅1%)适配新机器人。实验表明,0.9B参数的X-VLA在6个仿真和3个真实平台上表现优异,如LIBERO任务达93%成功率,布料折叠任务100%完成。其核心创新是将硬件差异视为"任务",用软提示引导Transformer处理异构数据,为机器人基础模型提供可扩展方案。

2506_90492529的博客 1241

shell编程之正则表达式——理论基础

目录前言一、 前言 正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑 sed是文本处理工具,可以读取文本内容,根据指定条件对数据进行添加,删除,替换等操作,被广泛应用于shell脚本 awk是

qq_48191100的博客 299

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习工具包 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")

shell编程--正则表达式(基础正则表达式grep、扩展正则表达式egrep)

文章目录

kimowinter的博客 1108

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

正则表达式: 从基础到进阶的语法指南

在编程和文本处理领域,正则表达式是一种描述文本模式的强大工具。无论是验证用户输入、提取文本信息,还是替换特定字符串,正则表达式都能高效完成任务。掌握正则表达式的语法,能让开发者在处理文本数据时如虎添翼。本文我将从基础语法入手,逐步深入到进阶用法,结合丰富的代码示例,带你全面掌握正则表达式的核心语法。

aa_hdkf_vg的博客 1723

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

正则表达式详解:从基础到扩展的全面指南

正则表达式详解:从基础到扩展 正则表达式是用于描述字符匹配模式的语法规则,广泛应用于Linux文本处理工具(如grep、sed、awk)中。本文系统讲解了正则表达式的概念、基础正则(BRE)和扩展正则(ERE)的核心元字符及用法。 基础正则支持的核心元字符包括行首/行尾锚定(^/$)、任意字符(.)、重复匹配(*/{n})和字符组([])等。扩展正则在此基础上增加了+、?、()、|等元字符,简化了复杂模式的编写。此外还介绍了特殊字符组(如[[:digit:]])的用法,用于简化常用字符范围的匹配。 通过实际

Sadsvit的博客 1018

正则表达式基础学习

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。

Reset 2066

【JS】JavaScript正则表达式基础

目录一、正则表达式二、字符串使用正则表达式三、常用例子 一、正则表达式 关于正则表达式,我在另一篇博客记录过:正则表达式 二、字符串使用正则表达式 三、常用例子

小绵杨 2209

正则表达式(基础篇)

目录一、正则表达式的概念 一、正则表达式的概念 正则表达式(Regular Expression,常简写为RegExp或RE),又称规则表达式,通常用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是为字符串处理而生的, ...

夕山雨的博客 1万+

正则表达式从基础学起

[编辑本段]一、什么是正则表达式   一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用——很不幸,这篇文章也不能够改变这一点,不过,经过一点点练习之后我就开始觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。正则表达式被各种文本编辑软件、类库(例...

夜 雨 411

图解总结正则表达式基础

下图总结了正则表达式的基础知识,可以用于python爬虫、数据库查找等方面的应用。

weixin_41855010的博客 1446
上一篇: 爬虫基础知识
下一篇: 北京积分落户数据分析
awpc21
博客等级 码龄8年 9粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值