# 正则模块
'''
正则就是用一些具有特殊含义的符号组合到一起用来描述字符或字符串的方法
或者说,正则就是用来描述一类事物的规则
它内嵌在python中,并通过re模块实现
正则表达式模式被编译成一系列的字节码,然后由用c编写的匹配引擎执行
'''
'''
生活中处处都是正则
比如,描述:四条腿
四条腿的动物或者桌子椅子
继续描述:活的
四条腿的动物
'''
'''
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符
\S 匹配任意空白字符
\d 匹配任意数字
\D 匹配任意非数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开头
$ 匹配字符串的末尾
'''
# import re
# print(re.findall('\w','egon 123 + - _ *')) # ['e', 'g', 'o', 'n', '1', '2', '3', '_']
# print(re.findall('\W','egon 123 + - _ *')) # [' ', ' ', '+', ' ', '-', ' ', ' ', '*']
# print(re.findall('\s','egon 123 + \n \t - _ *')) # [' ', ' ', ' ', '\n', ' ', '\t', ' ', ' ', ' ']
# print(re.findall('\S','egon 123 + \n \t - _ *')) # ['e', 'g', 'o', 'n', '1', '2', '3', '+', '-', '_', '*']
# print(re.findall('\d','egon 123 + \n \t - _ *')) # ['1', '2', '3']
# print(re.findall('\D','egon 123 + \n \t - _ *')) # ['e', 'g', 'o', 'n', ' ', ' ', '+', ' ', '\n', ' ', '\t', ' ', '-', ' ', '_', ' ', '*']
# print(re.findall('\n','egon 123 + \n \t - _ *')) # ['\n']
# print(re.findall('\t','egon 123 + \n \t - _ *')) # ['\t']
# print(re.findall('e','egon 123 + \n \t - e _ *')) #['e', 'e']
# print(re.findall('^e','egon 123 + \n \t - _ *')) # ['e']
# print(re.findall('^e','aegon 123 + \n \t - _ *')) # []
# print(re.findall('o','egon 123 + hello')) # ['o', 'o']
# print(re.findall('o$','egon 123 + hello')) # ['o']
# print(re.findall('o$','egon 123 + helloa')) # []
'''
. 代表任意一个字符 不能匹配换行符
? 代表?左边的字符出现0次或者1次
* 代表*号左边的字符出现0次或者无穷次
+ 代表+号左边的字符出现1次或者无穷次
{m,n} 代表左边的字符出现m次到n次
.* 贪婪匹配 匹配不够标准 一般是有害的
.*? 非 贪婪匹配
'''
# print(re.findall('a.b','a1b a b a-b aaaaaaaaabbbb')) # ['a1b', 'a b', 'a-b', 'aab']
# print(re.findall('a.b','a1b a b a\nb a-b aaaaaaaaabbbb')) # ['a1b', 'a b', 'a-b', 'aab']
# print(re.findall('a.b','a1b a b a\nb a-b aaaaaaaaabbbb',re.DOTALL)) # ['a1b', 'a b', 'a\nb', 'a-b', 'aab']
# print(re.findall('ab?','a ab a1b a b a\nb a-b aaaaaaaaabbbb')) # ['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'ab']
# print(re.findall('ab*','a ab a1b a b a\nb a-b aaaaaaaaabbbb')) # ['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'abbbb']
# print(re.findall('ab+','a ab a1b a b a\nb a-b aaaaaaaaabbbb')) # ['ab', 'abbbb']
# print(re.findall('ab?','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
# print(re.findall('ab{0,1}','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
'''
['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'ab']
['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'ab']
'''
# print(re.findall('ab*','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
# print(re.findall('ab{0,}','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
'''
['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'abbbb']
['a', 'ab', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'abbbb']
'''
# print(re.findall('ab+','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
# print(re.findall('ab{1,}','a ab a1b a b a\nb a-b aaaaaaaaabbbb'))
'''
['ab', 'abbbb']
['ab', 'abbbb']
'''
# print(re.findall('ab{1,4}','a ab a1b abbbbb b a\nb a-b aaaaaaaaabbbb')) # ['ab', 'abbbb', 'abbbb']
# print(re.findall('a.*b','a ab xxxyya123b345b a123ba456b'))
# print(re.findall('a.*b','xxxyya123b345b a123ba456b'))
'''
['a ab xxxyya123b345b a123ba456b']
['a123b345b a123ba456b']
'''
# print(re.findall('a.*?b','a ab xxxyya123b345b a123ba456b'))
# print(re.findall('a.*?b','xxxyya123b345b a123ba456b'))
'''
['a ab', 'a123b', 'a123b', 'a456b']
['a123b', 'a123b', 'a456b']
'''
# print(re.findall('compan(y|iess)','too many companiess have gone company bankrupt,and the next cpompan one is whos company'))
# print(re.findall('compan(?:y|iess)','too many companiess have gone company bankrupt,and the next cpompan one is whos company'))
'''
['iess', 'y', 'y']
['companiess', 'company', 'company']
'''
# print(re.findall('href="(.*?)"','<a href="http://www.baidu.com">点击我</a>'))
'''
['http://www.baidu.com']
'''
# rawstring
# print(re.findall(r'a\\c','a\c a1c abc'))
# print(re.findall('a\\\c','a\c a1c abc'))
# print(re.findall('a\\\\c','a\c a1c abc'))
'''
['a\\c']
['a\\c']
['a\\c']
'''
# [] 取[]内任意的一个
# print(re.findall('a[a-z]b','acb aDb a-b aob a1b a\b')) # ['acb', 'aob']
# print(re.findall('a[A-Z]b','acb aDb a-b aob a1b a\b')) # ['aDb']
# print(re.findall('a[a-zA-Z]b','acb aDb a-b aob a1b a\b')) # ['acb', 'aDb', 'aob']
# print(re.findall('a[0-9]b','acb aDb a-b aob a1b a\b')) # ['a1b']
# print(re.findall('a[-+*/]b','acb aDb a-b aob a1b a\b')) # ['a-b'] # print(re.findall('a[^-+*/]b','acb aDb a-b aob a1b a\b')) # ['acb', 'aDb', 'aob', 'a1b']
# print(re.findall(r'a[^-+*/]b','acb aDb a-b aob a1b a\b'))
# print(re.findall('ra[^-+*/]b','acb aDb a-b aob a1b a\b'))
# print(re.findall('a[^-+*/]b',r'acb aDb a-b aob a1b a\b'))
# print(re.findall('a[^-+*/]b','acb aDb a-b aob a1b a\\b'))
'''
['acb', 'aDb', 'aob', 'a1b']
['acb', 'aDb', 'aob', 'a1b']
[]
['acb', 'aDb', 'aob', 'a1b', 'a\\b']
['acb', 'aDb', 'aob', 'a1b', 'a\\b']
''' # re模块的其他方法
# re.search() 只取一个
# print(re.search('a[^-+*/]b','acb aDb a-b aob a1b a9b a\b'))
# print(re.search('a[*]b','acb aDb a-b aob a1b a9b a\b'))
# print(re.search('a[0-9]b','acb aDb a-b aob a1b a9b a\b'))
# print(re.search('a[0-9]b','acb aDb a-b aob a1b a9b a\b').group())
'''
<re.Match object; span=(0, 3), match='acb'>
None
<re.Match object; span=(16, 19), match='a1b'>
a1b
'''
# re.match()
# print(re.match('a[0-9]b','a0b acb aDb a-b aob a1b a9b').group()) # a0b
# print(re.search('^a[0-9]b','a0b acb aDb a-b aob a1b a9b').group()) # a0b
# re.split()
# print(re.split(':','root:x:0:0::/root:/bin/bash')) # ['root', 'x', '0', '0', '', '/root', '/bin/bash']
# print(re.split(':','root:x:0:0::/root:/bin/bash',maxsplit=1)) # ['root', 'x:0:0::/root:/bin/bash']
# re.sub() 替换
# print(re.sub('root','admin','root:x:0:0::/root:/bin/bash')) # admin:x:0:0::/admin:/bin/bash
# print(re.sub('root','admin','root:x:0:0::/root:/bin/bash',1)) # admin:x:0:0::/root:/bin/bash
# print(re.sub('^([a-zA-Z]+)([^a-zA-Z])(.*?)([^a-zA-Z])([a-zA-Z]+)$',r'\5\2\3\4\1','root:x:0:0::/root:/bin/bash')) # bash:x:0:0::/root:/bin/root
# re.compile()
# import re
# obj=re.compile('a\d{2}b')
# print(obj.findall('a12b a123b a12345b abbb')) # ['a12b']
# print(obj.search('a12b a123b a12345b abbb'))
# print(obj.search('a12b a123b a12345b abbb').group())
'''
<re.Match object; span=(0, 4), match='a12b'>
a12b
'''
# import time
# print(time.time()) # 1576152639.0129972 时间戳 一般用来计量时间
# print(time.localtime()) # 本地时区 东八区
# print(time.gmtime()) # 标准时间
'''
time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=20, tm_min=12, tm_sec=26, tm_wday=3, tm_yday=346, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=12, tm_min=12, tm_sec=26, tm_wday=3, tm_yday=346, tm_isdst=0)
'''
# print(time.strftime('%Y-%m-%d %H-%M-%S'))
# print(time.strftime('%Y-%m-%d %X'))
'''
2019-12-12 20-16-10
2019-12-12 20:16:10
'''
# 了解
# print(time.localtime(time.time())) # time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=20, tm_min=20, tm_sec=13, tm_wday=3, tm_yday=346, tm_isdst=0)
# print(time.gmtime(time.time())) # time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=12, tm_min=21, tm_sec=51, tm_wday=3, tm_yday=346, tm_isdst=0)
# print(time.mktime(time.localtime())) # 1576153398.0
# print(time.strftime('%Y-%m-%d',time.localtime())) # 2019-12-12
# print(time.strptime('2019-12-12','%Y-%m-%d')) # time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=346, tm_isdst=-1)
# print(time.asctime(time.localtime()))
# print(time.ctime())
'''
Thu Dec 12 20:28:03 2019
Thu Dec 12 20:28:03 2019
'''
# datetime
# import datetime
# print(datetime.datetime.now()) # 2019-12-12 20:30:13.626072
# print(datetime.datetime.fromtimestamp(111111)) # 1970-01-02 14:51:51
# print(datetime.datetime.now()+datetime.timedelta(days=3))
# print(datetime.datetime.now()+datetime.timedelta(days=-3))
# print(datetime.datetime.now()+datetime.timedelta(hours=3))
# print(datetime.datetime.now()+datetime.timedelta(minutes=3))
# print(datetime.datetime.now()+datetime.timedelta(seconds=3))
'''
2019-12-15 20:34:16.275172
2019-12-09 20:34:16.275172
2019-12-12 23:34:16.275172
2019-12-12 20:37:16.275172
2019-12-12 20:34:19.275172
'''
# print(datetime.datetime.now().replace(year=1999,hour=12)) # 1999-12-12 12:35:44.337966

最新文章

  1. windows 下编译log4cxx(x64)
  2. IOS常见错误之一连线错误
  3. Swift基础语法(二)
  4. 浅谈JS继承
  5. tomcat的文件路径 servelet的配置 以及maven中的WEB-INF的路径
  6. Android中使用am命令实现在命令行启动程序详解
  7. Demo学习: Closable Tabs
  8. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
  9. 从编译器角度理解C++中的引用和指针
  10. mysql怎么修改密码
  11. 虹软2.0 离线人脸识别 Android 开发 Demo
  12. Overview of .rdp file settings
  13. HDU.5765.Bonds(DP 高维前缀和)
  14. 开发工具|给你的项目买份保险:Python虚拟环境
  15. Hibrenate关系映射(一对一外键关联)
  16. PHP is_numeric 检测变量是否为数字或数字字符串
  17. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide
  18. Python自动化开发 - 面向对象(一)
  19. AngularJS双向绑定,手动实施观察
  20. 项目总结之关于JQuery一些常用的函数

热门文章

  1. 转: Github上关于iOS的各种开源项目集合
  2. 启用和配置 FILESTREAM
  3. edusoho 支持同一账号多人同时登录
  4. PHP图片处理
  5. EDM设计案例分享:6款引人入胜的夏日邮件营销模板分享
  6. jQuery测试错题解析
  7. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_3_LinkedList集合
  8. 新手解惑:nginx&php-fpm&fastcgi 是什么关系
  9. C#—Nhibernate使用教程
  10. 【opencv】opencv图像识别的一些基础的基础函数的使用方法