re-正则表达式模块

import re

预定义字符集:

\d:数字[0-9]

\D:非数字[^\d]

\s:空白字符[<空格>\t\r\n\f\v]

\S:非空白字符[^\s]

\w:单词字符[A-Za-z0-9_]

\W:非单词字符[^\w]

匹配数量:

.:匹配除换行符以外的任何单个字符

*:匹配前一个字符0或无限次(尽可能多的匹配)

*?:尽可能少的进行匹配前边的正则表达式

+:匹配前一个字符1次或无限次(尽可能多的匹配)

+?:尽可能少的进行匹配前边的正则表达式

?:匹配前一个字符0次或1次(尽可能多的匹配)

??:尽可能少的进行匹配前边的正则表达式

{m}:匹配前一个字符m次

{m,n}:匹配前一个字符m至n次(尽可能多的匹配)

{m,n}?:尽可能少的进行匹配前边的正则表达式

\:转义字符

?P<name>R:R表示为正则表达式,对正则表达式匹配到的内容进行命名

函数:

match():从字符串第一个字符开始匹配,直到不能匹配到为止,并返回匹配到的字符串;如果开头不能匹配则返回NoneType报错信息

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

m = re.match("\w+",a)

m.group()

search():在所有的字符串中开始进行匹配,返回匹配到的第一个结果

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

m = re.search("dvd",a)

m.group()

findall():返回所有匹配到的结果;返回一个列表

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

re.findall("[a-zA-Z]+",a)

split():用匹配到的字符对字符串进行切割;返回一个列表

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

re.split("\d+",a)

sub():把匹配到的内容进行替换,可以设定替换次数;返回替换后的结果

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

re.sub(‘\d+‘,"|",a,count=3)

group():返回匹配到的结果,常跟在match和search之后

例:

a = ‘kjksajt3w9#53~59/35(*_dvds~r)3‘

re.match("\w+",a).group()

re.search("dvd",a).group()

compile():把正则表达式进行编译

例:

com = re.compile(r‘\d+‘)  #r表示自然字符串,里边的字符不会被转义

e = com.findall(‘ksdhfkjshdfjkwiu237yyy8w7ye782skdhfkj374ljhfk2‘)

print(e)

注:可以看到compile编译后返回一个对象,在进行大量匹配的时候,compile效率会更高

groups():分组,即只获取括号内的匹配到的数据;以元组的形式返回

例:

f = re.search(‘(\d+)hfkjshdfjkwiu(\d+)‘,‘ksd234234hfkjshdfjkwiu237yyy8w7ye782‘)

print(f.groups())

groupdict():以命名方式匹配成功后,同时返回名字和匹配到的内容

例:

o = re.compile(r‘(?P<name>\d+)‘)

m = o.search(‘127.0.0.1‘)

m.groupdict()

用正则匹配一条nginx日志:

日志:

66.249.69.131 - - [10/Aug/2016:03:20:09 +0800] "GET /robots.txt HTTP/1.1" 404 162 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

匹配规则:

p = r‘(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) .* .* \[(?P<time>.*)\] "(?P<method>\w+) (?P<url>[^\s]*) (?P<version>[\w|/\.\d]*)" (?P<status>\d{3}) (?P<length>\d+) "(?P<refer>[^\s]*)" "(?P<userAgent>.*)"‘

匹配结果:

{‘ip‘: ‘66.249.69.131‘,

‘length‘: ‘162‘,

‘method‘: ‘GET‘,

‘refer‘: ‘-‘,

‘status‘: ‘404‘,

‘time‘: ‘10/Aug/2016:03:20:09 +0800‘,

‘url‘: ‘/robots.txt‘,

‘userAgent‘: ‘Mozilla/5.0 (compatible; Googlebot/2.1; ‘

‘+http://www.google.com/bot.html)‘,

‘version‘: ‘HTTP/1.1‘}

时间: 2024-08-09 19:51:48

re-正则表达式模块的相关文章

re---Python的正则表达式模块

re是Python中最常见的正则表达式模块,常用方法包括compile,match,findall,finditer,search,split,sub等. 在一些字符串自身操作方法不方便使用的情况下,使用re模块能够非常方便地完成一些查找和替换等操作. 1, compile 预先编译好正则表达式,可为之后的重复使用节省时间. 如 >>> import re >>> url = "http://10.128.39.48:8058/net_command"

Python正则表达式模块(re模块)

Python是我接触到的第一门编程语言,虽然它足够简单,但是对于当时刚刚接触编程语言的我来说还是有些难度的,于是只是了解了一些Python的基本语法,稍微深入一点的地方都没怎么了解.不过,到现在为止,我已经接触了这门编程语言一年了,期间把Python各种特性,各种包都看过,了解过.不过对于正则表达式这块仍然一知半解,加上前段时间帮助聪哥整理了<深入Python3>的中文维护版,凑上这个国庆假期,于是来简单的聊一聊这个正则表达式模块--re. 首先是字符串中字符的替换问题,如果使用原生的Pyth

Python 正则表达式模块 (re) 简介

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息.Python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配. Python 正则表达式语法 正则表达式可以包含普通字符和特殊字符,普通字符(比如数字或者字母)可以直接对目标字符串

python re正则表达式模块

模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等 复习一下基本的正则表达式吧  .:匹配除了换行符以为的任意单个字符  *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式 +:匹配位于+之前的一个或者多个字符  |:匹配位于|之前或者之后的字符  ^:匹配行首  $:匹配行尾  ?:匹配位于?之前的零个或者一个字符,不匹配多个字符  \:表示 \ 之后的为转义字符  []:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字  ():将位于()之内的的内容当作一个

Python中re(正则表达式)模块函数学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 match() 函数只检查 RE 是否在字符串开始处匹配

re(正则表达式)模块

一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.splitall 以匹配到的字符当做列表分隔符 re.sub      匹配字符并替换 二.常用正则表达式符号 '.'      默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^'        匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","

python的re正则表达式模块学习

python中re模块的用法 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法. 1.re的简介    使用python的re模块,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息.python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配. import re pr

Python re正则表达式模块学习【转】

感谢原作者,本文转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 博主还有一些比较好的python文档在此一并推荐,可以移步查看. 文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whate

Python之re(正则表达式)模块小结

这篇文章借鉴了一些其他文章和教程,介绍了python中re模块的一些规则和常用函数,不足之处希望指出,我也很希望能整理出一份很完美的小结. 一.正则表达式模式 模式字符串使用特殊的语法来表示一个正则表达式: 字母和数字表示他们自身.一个正则表达式模式中的字母和数字匹配同样的字符串. 多数字母和数字前加一个反斜杠时会拥有不同的含义. 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义. 反斜杠本身需要使用反斜杠转义. 由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们.模式元素

正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、findall、compile、

re: 介绍:关于正则表达式的模块 正则表达式字符: 匹配*号前的字符0次或多次   意义 例子[#后面代表结果] . .代表匹配一个任意字符,\n除外 ^ ^后面的字符串必须是待匹配字符串的开头,否则找不到 $ $前面的字符串必须是待匹配字符串的结尾,否则找不到 \d 可以匹配一个数字 \D 匹配非数字 \s 可以匹配一个空白字符(空格,缩进符.\n,\r)       可以用+.?.*来选择匹配次数     + 代表匹配前一个字符一次或多次,贪婪的   ? 代表匹配前一个字符0次或1次,不贪