基本概念

使用正则表达式需要import re

表达式前加r避免转义

\d代表数字,\s代表空白字符,\w代表字母+数字。

.代表任意单个字符

{m,n}代表前面字符至少出现m次,最多出现n次。

(xxx)括号代表分组,方便在匹配结果中取出。

(?:xxx)不分组,不能从匹配结果中单独取出,可以在后面加匹配次数。

research

只返回第一个匹配结果,不匹配则返回None.

结果.group()代表匹配结果,group(1)代表表达式中第一个()内的字符。

import re
text = "inet addr:211.2.10.100 Bcast:211.2.10.255 Mask:255.255.255.0 inet addr:211.2.10.123"
# find ip address
m = re.search(r"inet addr:((\d{1,3}\.){3}\d{1,3})", text)
ip = m.group(1)
print ip
# 211.2.10.100

findall

匹配所有结果,返回列表。

如果模式中有1个(),则列表内容为分组字符串,如果有1个以上(),则列表内容为元组,元组内容为分组内容。

import re
a = """tcpdump -n -x -c 1
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:13:57.653999 IP 10.1.1.3.ssh > 10.1.1.2.60442: Flags [P.], seq 2265683999:2265684099, ack 3711911807, win 90, length 100
0x0000: 4510 008c 446b 4000 4006 50f9 0a01 0103
0x0010: 0a01 0102 0016 ec1a 870b 981f dd3f 477f
0x0020: 5018 005a a576 0000 1810 f435 f028 ef1e
1 packets captured
1 packets received by filter
0 packets dropped by kernel """
b = re.findall(r"(?: \w\w\w\w){8}", a)
# b = [' 4510 008c 446b 4000 4006 50f9 0a01 0103', ' 0a01 0102 0016 ec1a 870b 981f dd3f 477f', ' 5018 005a a576 0000 1810 f435 f028 ef1e'] c = re.findall(r"> (\d+.\d+.\d+.\d+)", a)
# c = ['10.1.1.2'] d = re.findall(r"(\d+\.\d+\.\d+\.\d+).+> (\d+\.\d+\.\d+\.\d+)", a)
# d = [('10.1.1.3', '10.1.1.2')] e = re.findall(r"( \w\w\w\w){8}", a)
# e = [' 0103', ' 477f', ' ef1e'], 每列最后一个。

官方文档:

http://docs.python.org/2/library/re.html

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

  1. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  2. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  3. 转载 Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  4. 转载 Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式 ...

  5. python正则表达式入门篇

    文章来源于:https://www.cnblogs.com/chuxiuhong/p/5885073.html Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. ...

  6. Python 正则表达式-OK

    Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...

  7. Python爬虫入门之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  8. Python爬虫入门七之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  9. 转 Python爬虫入门七之正则表达式

    静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串 ...

随机推荐

  1. 掌握 Linux 调试技术

    掌握 Linux 调试技术 在 Linux 上找出并解决程序错误的主要方法 Steve Best (sbest@us.ibm.com)JFS 核心小组成员,IBM 简介: 您可以用各种方法来监控运行着 ...

  2. POJ-3580-SuperMemo(splay的各种操作)

    题意:对数组进行各种操作 其中 REVOLVE右移操作.将区间[a,b]右移c位 首先c可能比较多,可以先对区间长度取模. 在右移之后,可以发现[a,b]被分为两个区间[a,b-c]  [b-c+1, ...

  3. 【Gzip】

    为你的网站开启 gzip 压缩功能(nodejs.nginx) Do not forget to use Gzip for Express.js 网页GZIP压缩检测

  4. 动态规划——A 最大子段和

    A - 最大子段和 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  5. 《University Calculus》-chaper13-向量场中的积分-线积分

    线积分: 基于二重积分和三重积分的引入,我们对于线积分的引入过程将会轻车熟路. 对于一根不均匀密度的铜丝,我们如何求其总质量?如下图. 类似二重积分和三重积分的引入,我们首先基于实际问题给出黎曼和的形 ...

  6. linux 下安装配置jboss as7以及部署应用

    linux 下安装配置jboss as7以及部署应用 1.测试平台及软件 centos 5.4 jdk-7u5-linux-i586.rpm jboss-as-7.1.1.Final.zip jbos ...

  7. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  8. jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画

    jQuery效果 隐藏.显示.切换.滑动.淡入淡出.以及动画 1.隐藏与显示(改变:display:none;) hide()--隐藏 show()--显示 toggle()方法:可以使用它来切换hi ...

  9. linux —— 学习笔记(软件操作:安装、卸载、执行)

    目录: 0.相关基本命令    1.安装软件    2.卸载软件    3.打开软件  0.相关基本命令 与软件操作相关的主要命令有:dpkg  和 apt-get . dpkg   : “dpkg ...

  10. 批量更新数据小心SQL触发器的陷阱

    批量更新数据时候,Inserted和Deleted临时表也是批量的,但触发器只会调用执行一次!两个概念千万不要弄混淆! 错误的理解:例如:创建在A表上创建了一个Update触发器,里面写的是Updat ...