Python教程

python开发之正则表达式

本文主要是介绍python开发之正则表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简介
我们将会是用正则表达式进行基本的匹配将,编写的代码更加的简洁,然后转向更加强大的功能,诸如字符串的替换,以及创建你的字符类型。
使用正则表达式查找文本模式

import re 
number=re.complile(r'\d\d\d-\d\d\d-\d\d\d\d') #\d表示的是一个字符串
mo=number.search('my number is 445-555-1234')
print('mo.group()')

正则表达式的使用的一般歩奏

  • 用import re 导入正则表达式模块
  • 用re.complie()创建一个regex对象(使用的是原始的字符串)
  • 用regex对象的search()方法传入一个你想要查找的字符串。返回的是一个match对象
  • 调用match对象的group方法()返回的是实际文本的字符串
    正则表达式的更多的匹配模式
    利用括号分组
import re 
number=re.complile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)') #\d表示的是一个字符串
mo=number.search('my number is 445-555-1234')
print('mo.group()')
#第一个括号是group(1),第二各组是group(2),group(0)表示匹配整个文本

使用管道匹配多个分组

m=re.recompile(r'batman|tina fay')#希望匹配许多的表达式中的一个就可以匹配它,如果俩个都出现在被查找的字符串之中,第一次出现的文本将作为match返回的对象,也可以使用来匹配多个模式中的一部分。
m.search("batman and tine fey")

使用问号实现可选匹配

()?#表示的是可选匹配,匹配括号之前的字符零次或者一次
number=re.complile(r'(\d\d\d)?\d\d\d-\d\d\d\d') #\d表示的是一个字符串
mo=number.search('my number is 445-555-1234')

使用星号匹配零次或者多次
re.compile(r'bat(wo)*man')
使用加号匹配一次或者多次
re.compile(r'bat(wo)+man')#如果要匹配真正的加号的话在加号的前面加上倒斜杠实现转义:\+
使用花括号匹配特定的次数
re.compile(r'(wo){3}')
贪心和非贪心匹配

re.compile(r'(wo){3,5}')#贪心
re.compile(r'(wo){3,5}?')#非贪心

findall()方法:将返回的是一组字符串,包含被查找的字符串中的所有的匹配。
作为findall()方法的返回结果的总结:

  • 如果调用在一个没有分组的正则表达式上,方法findall()将返回的一个匹配的字符串的列表
  • 如果调用在一个有分组的正则表达式上,方法findall()将返回的是一个字符串的元组的列表(每一个分组对应的是一个字符串)

字符分类

\d-->0-9的任何数字
\D-->0-9的的数字外的任何字符
\w-->任何字母数字或者下划线
\W-->除了字母数字和下划线以外的任何字符
\s-->空格、制表符、换行符
\S-->除了空格、制表符、以外的任何字符
插入字符(^)和美元字符($)
插入符号:表明必须发生在被查找文本开始处,末尾加上美元($)表示该字符串必须以这个正则表达式的模式结束。
使用点-星匹配到所有的字符(.*),(.*?)

正则表达式的复习

?匹配零次或者一次前面的分组
*匹配零次或者多次前面的分组
+匹配一次或多次前面的分组
{n}匹配n次前面的分组
{,m}匹配零次到m次前面的分组
{n,}n次或者更多前面的分组
{n,m}匹配至少n次,至多前面每次的分组
{n,m}?或*?或+?对前面的分组进行非贪匹配
^spam 字符串必须要以spam开始
spam$字符串必须以spam结束
.匹配所有的字符,换行符
\d、\w和\s分别表示数字单词空格
\D、\W、\S表示的是数字单词空格之外的所有的字符
[abc]表示括号里的任意字符
[^abc]表示匹配不在括号里的任意字符
不区分大小写匹配要传入re.I作为第二个参数
robit=re.complile(r'cob',re.I)
用sub()来替换字符串
这篇关于python开发之正则表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!