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()

        wKioL1h8XlqA5mQjAAAHBSO6k_8922.png

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

    例:        

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

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

        m.group()

        wKiom1h8XqHRW8cKAAAFgeJnvCo883.png

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

    例:        

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

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

        wKioL1h8XuXBAKmNAAAJpgfGSd8545.png

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

    例:        

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

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

        wKioL1h8XzTgyqREAAAJn9h0yDs284.png

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

    例:

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

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

        wKioL1h8X3Gwhx1-AAAJCzEQ-10546.png

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())

        wKioL1h8YCyQeF5NAAAHWg1uhAY942.png

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

    例:

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

        m = o.search('127.0.0.1')

        m.groupdict()

        wKiom1h8YF-S9pI2AAAMUEU5Gmg184.png

用正则匹配一条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'}

wKioL1h8YPzTP9OTAAAblgmdijU933.png

本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1892256如需转载请自行联系原作者


weilovepan520

相关文章
|
6月前
|
Python
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r&#39;string&#39;`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
65 3
|
6月前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
137 0
|
3月前
|
Python
告别死记硬背:掌握Python正则表达式re模块的高效应用&[面向百度编程]
Python中正则表达式的高效应用,通过内置的`re`模块,讲解了如何匹配、提取和替换字符串,并提供了相关示例代码,同时提倡通过实践来掌握正则表达式的使用,而不是仅仅依赖网络搜索。
44 1
|
3月前
|
SQL 分布式计算 算法
【python】python指南(三):使用正则表达式re提取文本中的http链接
【python】python指南(三):使用正则表达式re提取文本中的http链接
27 0
|
5月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
49 2
|
5月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
41 0
|
5月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
51 2
|
5月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
5月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
5月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。