python基础 正则表达式的应用

在python中使用正则表达式的步骤很简单:

  1. 用import re 导入正则表达式模块,
  2. 用re.compile()函数创建一个Regex对象(记得使用原始字符串)
  3. 向Regex对象传入search()想要查找的字符串。返回一个Match()对象。
  4. 调用Match对象的group()方法,返回实际匹配文本的字符串。
  5. 当group()方法中携带的参数为0或者不携带怎返回整个文本,如果携带1,2......将返回对应的文本,(利用括号实现分组)。
import re
string = 'My number is 415-555-999'
phone_number = re.compile(r'(\d{3})-(\d{3})-(\d{3})')
mo = phone_number.search(string)
print(mo.group(0))
print(mo.group(2))

result = 415-555-999 and 555

 

  • 用管道可以实现匹配多个分组
import re
string = 'My number is 415-555-999'
phone_number = re.compile(r'(\d{3})-(\d{3})-(\d{3})|number')
mo = phone_number.search(string)
print(mo.group(0))

 

  • 用问号实现可选匹配(零次或一次)
import re
string = 'My number is 415-555-999'
phone_number = re.compile(r'n(u)?mber')
mo = phone_number.search(string)
print(mo.group(0))

result = number

  • 用*号匹配多次或者零次

 

import re
string = 'My nuuuumber is 415-555-999'
phone_number = re.compile(r'n(u{1})*mber')
mo = phone_number.search(string)
print(mo.group(0))

result = nuuuumber

 

  • 用加号匹配一个或者多次
import re
string = 'My nuuuumber is 415-555-999'
phone_number = re.compile(r'n(u{1})+mber')
mo = phone_number.search(string)
print(mo.group(0))

result = nuuuumber

​​​​​​​ 

  • 贪心匹配和非贪心匹配

​​​​​​​Python的正则表达式默认是贪心的,这表示在有二义的情况下会尽量匹配长的字符串。非贪心版本是尽可能的匹配最短的字符串,即在结束的花括号后跟着一个问号。

import re
string = 'HaHaHaHa'
phone_number = re.compile(r'(Ha){2,4}?')
mo = phone_number.search(string)
print(mo.group(0))

result = "HaHa"

 

  • 正则表达式符号复习

1.?匹配零次或一次前面的分组;

2.*匹配零次或无数次前面的分组;

3.+匹配一次或无数次前面的分组;

4.{n}匹配n次前面的分组

5.{n,}匹配n次或者更多次前面的分组

6.{,m}匹配零次到m次前面的分组

7.{n,m}?n次或者没次非贪心匹配

8.^spam意味着字符串必须以spam开始

9.spam$意味着字符串必须以spam结束

10..匹配所有的字符,换行符除外

11.\d,\w,\s分别匹配数字,单词,空格(\D....分别匹配非数字、非单词、非空格)

12.[adc]匹配放括号中的任意字符(诸如a、b、c)

13[^adb]匹配不在括号内的任意字符 

  • 不区分大小写的匹配
​​​​​​​
import re
robocop = re.compile(r'robocop',re.I)
content = robocop.search("RoboCop is part man ,part machine,all cop..").group()

print(content)

result = "RoboCop"

 

  • 用sub()方法替换字符串

​​​​​​​

import re
robocop = re.compile(r'robocop',re.I)
content = robocop.sub("v","RoboCop is part man ,part machine,all cop..")
print(content)

result = "v is part man ,part machine,all cop.."

 

  • 管理复杂的正则表达式

​​​​​​​可以告诉re.compile(),向其传入re.verbose作为第二个参数 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毛毛虫会长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值