python_数据分析_正则表达式

正则表达式就是记录文本规则的代码,我们将从正则表达式基础和re模块实现两个方面来说

1.正则表达式基础

正则表达式主要学习元字符,可以参考百度进行:https://baike.sogou.com/v107588.htm?fromTitle=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

2.使用Python的re模块实现

Python提供了re模块,用于实现正则表达式的操作。在实现时,可以使用re模块提供的方法,如search(),match(),findall()进行字符串处理,也可以使用re模块的compile()方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串。

2.1 使用match()方法进行匹配

match()方法用于从字符串的开始处进行匹配,如果再开始处匹配成功,则返回Match对象,否则返回None

import re
pattern = r"mr_\w+"
string = "MR_shop mr_shop"
match = re.match(pattern, string, re.I)
print(match)

string = "1234"
match = re.match(pattern, string, re.I)
print(match)

返回结果分别为

<re.Match object; span=(0, 7), match='MR_shop'>

None

同时,如果返回match类,还有以下几个参数可以调用

  • match.start() :匹配值的起始位置
  • match.end() :匹配值的结束位置
  • match.span():匹配值的位置元组
  • match.string():要匹配的字符串
  • match.group():匹配的数据

2.2 使用search()方法进行匹配

search()方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功返回Match对象。该方法的调用同match对象。

import re
pattern = r"mr_\w+"
string1 = "MR_shop mr_shop"
match1 = re.search(pattern, string1, re.I)
print(match1)

string2 = "你好MR_shop mr_shop"
match2 = re.search(pattern, string2, re.I)
print(match2)

	
【Running】=================
<re.Match object; span=(0, 7), match='MR_shop'>
<re.Match object; span=(2, 9), match='MR_shop'>

2.3 使用findall() 方法进行匹配

findall() 方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回(返回不同于前两种方法)。语法格式与上两个基本相似

import re
pattern = r"mr_\w+"
string1 = "MR_shop mr_shop"
match1 = re.findall(pattern, string1, re.I)
print(match1)

string2 = "你好MR_shop mr_shop"
match2 = re.findall(pattern, string2, re.I)
print(match2)


【Running】
['MR_shop', 'mr_shop']
['MR_shop', 'mr_shop']

2.4 替换字符串

sub()字符串用于实现字符串替换
re.sub(pattern, repl, string, count, flags)

  • pattern:表示模式字符串
  • repl:表示替换的字符串
  • string:表示呗查找替换的原始字符串
  • count:匹配次数,默认值为0,表示替换全部
  • flags:可选参数,用于控制匹配方式,如是否区分大小写
import re
pattern = r'1[345678]\d{9}'
string = '姓名:123 电话:13365656565'
result = re.sub(pattern, '1XXXXXXXXXX', string)
print(result)

运行结果:姓名:123 电话:1XXXXXXXXXX

2.5 分割字符串

re.split(pattern, string, [maxsplit], [flags])

  • pattern:表示模式字符串
  • string:要匹配的字符串
  • maxsplit:表示最大拆分次数,可选
  • flags:标志位,如是否区分大小写。
import re
pattern = r'[?|&]'
string = 'niafeibuvos&boiabfabv?vewivbow&nbivoosb'
result = re.split(pattern, string)
print(result)

运行结果为:[‘niafeibuvos’, ‘boiabfabv’, ‘vewivbow’, ‘nbivoosb’]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章