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. sqlldr导入数据(以PostgreSql>>>Oracle为例)

    1.在目标数据库中创建表 1.1点击源表,复制创建语句 1.2 修改数据类型以匹配目标数据库,如: 字符串类型:character varying(20)>>>varchar2(20 ...

  2. 【MongoDB】数组长度查询

    db.groupedInfo.count({'surveyInfo.surveyAndUserID.0':{$exists:1}})

  3. ChemOffice Professional 16.0新增了哪些功能

    ChemOffice Professional 16.0是为终极化学和生物组件设计,可满足化学家和生物学家的需求.ChemOffice Professional帮助科学家有效地检索数据库,包括SciF ...

  4. swift - 各种手势用法大全

    UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1.首先创建几个view,来用于手势的检测 let view1 = UIView() let view2 ...

  5. ping命令和telnet命令

    1.检查能不能连接上远程主机 ping  主机ip 2.检查远程主机端口是不是开放 telnet 198.10.10.69 1521 Trying 198.10.10.69...Connected t ...

  6. upper()

    upper() 用于把字符串中的小写字母转换成大写字母 In [1]: str = "Hello World" In [2]: str.upper() Out[2]: 'HELLO ...

  7. JavaIO详解

    很全面的内容:http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html

  8. [干货] 有了微信小程序,谁还学ReactNative?

    版权声明:本文由贺嘉原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/145 来源:腾云阁 https://www.qclou ...

  9. HTML的特殊字符-图标对应表

    本文摘自:http://www.cnblogs.com/web-d/archive/2010/04/16/1713298.html   HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码 ...

  10. 微信小程序5.2.2版本,找不着resource下exml皮肤

    问题描述: egret engine 5.2.2 原来5.1.11好好的,一升级就跪了 新建一个项目,找不到皮肤... 已发到论坛问去了,现在只能手动复制皮肤到小游戏目录下... 解决方案: 卸载重新 ...