欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python中的re模块介绍和使用

程序员文章站 2023-10-10 16:22:51
Python中的re模块1.什么是re模块?re模块:python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。注意:re模块是python独有的正则表达式所有编程语言都可以使用re模块、正则表达式是对字符串进行操作2.常用的一些操作fullmatch():让整个字符串和正则表达式进行匹配match():匹配字符串开头search():扫描整个字符串并返回第一个成功的匹配。f...

Python中的re模块

1.什么是re模块?

re模块:python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。

注意:

  • re模块是python独有的
  • 正则表达式所有编程语言都可以使用
  • re模块、正则表达式是对字符串进行操作

2.常用的一些操作

fullmatch():让整个字符串和正则表达式进行匹配

match():匹配字符串开头

search():扫描整个字符串并返回第一个成功的匹配。

findall(): 获取字符串中所有满足正则表达式的子串

finditer():获取字符串中所有满足正则表达式的子串。返回一个迭代器

split():将字符串中能和正则表达式匹配的子串作为切割点,对字符串进行切割

sub():替换

group():获取正则表达式中指定的分组匹配到的结果

compile:编译正则表达式,创建正则表达式对象

3.常用操作详解

fullmatch

语法:
fullmatch(正则表达式, 字符串) - 让整个字符串和正则表达式进行匹配,不能完全匹配返回None

re_str = r'\d{3}'
print(fullmatch(re_str, '732'))	# 能成功匹配
print(fullmatch(re_str, '732hjas'))   # None

match

语法:
match(正则表达式, 字符串) - 匹配字符串开头,如果不是起始位置匹配成功的话,match()就返回none

print(match(re_str, '789'))
print(match(re_str, '789j手机打开'))  
# 都能成功匹配

search

语法:
search(正则表达式,字符串)  - 在字符串中查找第一个能和正则表达式匹配的子串。如果找到了返回匹配对象,找不到返回None

str1 = 'and123=hu123aa  a456klk98!ll7hu123oop'
result = search(r'\d+', str1)
print(result)    # <re.Match object; span=(3, 6), match='123'>

findall

语法:
findall(正则表达式,字符串)  - 获取字符串中所有满足正则表达式的子串。返回一个列表,列表中的元素是字符串
str1 = 'and123=hu123aa  a456klk98!ll7hu123oop'
result = findall(r'\d+', str1)
print(result)    # ['123', '123', '456', '98', '7', '123']

finditer

语法:
finditer(正则表达式,字符串) - 获取字符串中所有满足正则表达式的子串。返回一个迭代器,迭代器中的元素是匹配对象

str1 = 'and123=hu123aa  a456klk98!ll7hu123oop'
result = findall(r'\d+[a-z]', str1)
print(result)   # ['123a', '456k', '7h', '123o']

split

语法:
split(正则表达式, 字符串) - 将字符串中能和正则表达式匹配的子串作为切割点,对字符串进行切割。返回值是列表,列表中的元素是字符串
split(正则表达式, 字符串, 次数)  - 指定切割次数

str1 = 'and123=hu123aaa456klk98!ll7hu123oop'
result = split(r'\d+', str1)
print(result)   # ['and', '=hu', 'aaa', 'klk', '!ll', 'hu', 'oop']

result = split(r'\d+', str1, 3)
print(result)   # ['and', '=hu', 'aaa', 'klk98!ll7hu123oop']

sub

语法:
sub(正则表达式, 字符串1, 字符串2)  -  将字符串2中能和正则表达式匹配的子串全部替换成字符串1
sub(正则表达式, 字符串1, 字符串2, 次数)   -  限制替换次数

str1 = 'and123=hu123aaa456klk98!ll7hu123oop'
new_str1 = sub(r'\d+', '+', str1)
print(new_str1)  # and+=hu+aaa+klk+!ll+hu+oop

# 敏感词用*替换
sentence = '你丫是傻 叉吗? 我操你大爷的. F u c k you.'
re_str = r'(?i)[操肏艹草曹]|f\s*u\s*c\s*k|s\s*h\s*i\s*t|傻\s*[比屄逼叉缺吊屌]|煞\s*笔' 
new_sentence = sub(re_str, '*', sentence)
print(new_sentence)   # 你丫是*吗? 我*你大爷的. * you.

group

语法:
匹配对象.group()   -  获取整个正则表达式匹配到结果
匹配对象.group(分组号)  - 获取正则表达式中指定的分组匹配到的结果(分组号从1开始)

re_str = r'(\d{2})-([a-z]{3})'
result = match(re_str, '23-sjm回款及时发货')
print(result.group())    # 23-sjm
print(result.group(1))   # 23
print(result.group(2))   # sjm

compile

语法:
compile(正则表达式) - 编译正则表达式,创建正则表达式对象
re_obj = compile(r'\d{3}')

fullmatch(r'\d{3}', '234')
re_obj.fullmatch('234')

本文地址:https://blog.csdn.net/plyzz/article/details/107071826