import re

# re.match() 能够匹配出以xxx开头的字符串
ret = re.match(r"H", "Hello Python")
# print(ret.group()) # 分组
ret = re.match(r"([^-]*)-(\d+)", "010-12345678")
# print(ret.group(1)) # 通过引用分组中匹配到的数据即可,但是要注意是元字符串,即类似 r""这种格式
ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>")
# print(ret.group(0)) # 不仅匹配开头
ret = re.search(r"\d+", "阅读次数为 9999")
# print(ret.group()) # 匹配多个值,并返回一个列表
ret_list = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
# print(ret_list) # 匹配并替换多个值,并返回一个列表
ret_list = re.sub(r"\d+", '998', "python = 997 python = 997")
print('ret_list=====: %s' % ret_list) # 匹配并切割
ret_list = re.split(r":| ", "info:xiaoZhang 33 shandong")
# print(ret_list) # 非贪婪模式。在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
s = "aa2343ddd"
r = re.match(r"aa(\d+?)", s)
# print(r.group(1)) print('111111111111111111')
# 匹配:'http://www.freebuf.com',
# url = 'http://www.freebuf.com'
url = 'https://freebuf.com/articles/es/123%e7%b1%b3%e9%9b%aa%e5%84%bf'
url = 'http://www.freebuf.com/author/%e7%b1%b3%e9%9b%aa%e5%84%bf'
# url = 'http://www.freebuf.com/157843sdf.html'
# 匹配域名:https://www.freebuf.com
ret_list = re.search(r'https?://(\w+?\.)+\w+\/?$', url)
print(ret_list.group()) if ret_list != None else print('ret_list = None') # 匹配文件夹:https://www.freebuf.com/articles/es
ret_list = re.search(r'https?://(\w+?\.)+\w+(\/\w+)*(\/\w+\/?)$', url)
if ret_list != None:
print(ret_list.group())
else:
print('ret_list = None')
# print(ret_list.group()) if ret_list != None else print('ret_list = None')
pass
# 匹配文件:http://www.freebuf.com/news/157843.html
ret_list = re.search(r'https?://(\w+?\.)+\w+(\/\w+)*(\/\w+\.\w+)$', url)
print(ret_list.group()) if ret_list != None else print('ret_list = None')

  

先编译一次,后面就不编译了

import re

str = 'https://www.freebuf.com/page/357'

pattern = re.compile(r'(p|s)\:\/\/www\.(.+?\..+?)\/+?', re.DOTALL)
match = pattern.findall(str) print(type(match))
print(match)

  

忽略大小写

在正则表达式前面加(?i)

import re

str1 = """
201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html http/1.1 " 200" 2426
"http://a.com" "es-ES,es;q=0.8" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" 172.16.119.8 - admin [15/Aug/2011:18:17:50 +0800] "PROPFIND /svn/EAGLE HTtP/1.1" 201 649
172.16.119.8 - admin [15/Aug/2011:18:17:50 +0800] "PROPFIND /svn/EAGLE/!svn/vcc/default HTTP/1.1" 207 401
172.16.119.8 - admin [15/Aug/2011:18:17:50 +0800] "PROPFIND /svn/EAGLE/!svn/bln/31 HTTP/1.1" 207 454
172.16.119.8 - admin [15/Aug/2011:18:17:50 +0800] "PROPFIND /svn/EAGLE HTTP/1.1" 207 649
172.16.119.8 - admin [15/Aug/2011:18:17:50 +0800] "PROPFIND /svn/EAGLE/!svn/vcc/default HTTP/1.1" 207 454
""" pattern = re.compile(r'(?i)HTTP/.+?\b[^\d]+?([2345]\d{2})', re.DOTALL)
ret = pattern.findall(str1)
print(ret)

  

点号默认不匹配换行,要想匹配换行,需要设置re.DOTALL

pattern = re.compile(r'(?i)HTTP/.+?\b[^\d]+?([2345]\d{2})', re.DOTALL)

  

正则表达式python的更多相关文章

  1. 正则表达式python和C++对比

    pattern格式(基本通用): pattern格式 符号 说明 ^ 匹配开头 $ 匹配结尾 . 匹配任意一个字符 [...] 匹配任意一个指定的字符 [^...] 匹配任意一个非指定的字符 * 匹配 ...

  2. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

  3. python正则表达式 Python Re模块

    最近在学python 练习的时候随手写的,方便以后自己参考~如果能对其他同学有所帮助就再好不过了 希望大家指正哦~  我会随时整理的,先这样~ 正则表达式 1.元字符([ ]),它用来指定一个char ...

  4. phython正则表达式 Python Re模块

    反斜杠问题 与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰.假如你需要匹配文本中的字符”\”, Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式 ...

  5. 正则表达式-Python实现

    1.概述: Regular Expression.缩写regex,regexp,R等: 正则表达式是文本处理极为重要的工具.用它可以对字符串按照某种规则进行检索,替换. Shell编程和高级编程语言中 ...

  6. 正则表达式 ——python 基础

    一.引言 正则表达式是含有文本和特别字符的字符串,这些文本和特别字符描述的模式可以识别各种字符串. 正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合.子组匹配,模式重复次数...正是这些 ...

  7. 正则表达式 python

    下面这种方式 从结果上看 匹配的是关键字, 但是不是 每一次都可以 100% 准确 search_words_dict = { "肠炎宁": 0, "维生素AD" ...

  8. Python正则表达式中的re.S

    title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...

  9. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

随机推荐

  1. BleedTree动画混合树

    通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不 ...

  2. windows下dubbo-admin和zookeeper安装部署

    1.   概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂 ...

  3. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  4. N76E003学习之路(二)

    最近一直在想N76E003和STM8M003的对比情况,在网上找了不少资料,看了不少文档,具体总结如下: STM8S003F3P6:一共20个脚,最多支持16个GPIO,支持16个外部中断:2个16位 ...

  5. 使用fetch-jsonp进行跨域以及参数的传递

    其实fetch-jsonp的官方文档里面已经写得很详细了,连接如下:https://github.com/camsong/fetch-jsonp:但是由于它本身没有多少demo,所以自己在上手的时候遇 ...

  6. jq的clone用第二次的时候为什么会复制clone出来的元素(即一变二,二变四)

    原因是clone得到的是一个数组吗,每次再clone的时候,相当于操作了这个数组,肯定就会出现重复,我们只需要取第一个值就可以了,用.first()的方法 jquery(‘item‘).first() ...

  7. 鼠标聚焦到Input输入框时,按回车键刷新页面原因及解决方法

    参考地址:http://blog.csdn.net/xuezhongsong/article/details/6859037 方式1:全局控制回车,13-回车键,27-ESC,113-F2 docum ...

  8. ubuntu 安装nfs 服务

    1. 安装nfs服务软件 (1)服务器端 $sudo apt-get install nfs-kernel-server  rpcbind (2)客户端 (可以省略) $sudo apt-get in ...

  9. 【linux】Centos下登陆mysql报错#1045 - Access denied for user 'root'@'localhost' (using password: NO)

    创建mysql  远程链接 grant all privileges on *.* to 'test'@"%" identified by "test666 with g ...

  10. codeforce 148D. Bag of mice[概率dp]

    D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...