ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python开发之正则表达式

2022-03-19 20:33:41  阅读:153  来源: 互联网

标签:字符 匹配 re python number 正则表达式 开发 分组 字符串


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

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()来替换字符串

标签:字符,匹配,re,python,number,正则表达式,开发,分组,字符串
来源: https://www.cnblogs.com/xiaowenxu/p/15999091.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有