python正则match/search/findall/sub/split的简单使用

import re
reg = re.match(r"hello", "hello world,hello Ms peng!")
print(reg) #<re.Match object; span=(0, 5), match='hello'>
#使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
print(reg.group()) #hello

#re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
reg2 = re.match(r"([a-zA-Z0-9]{4,20})@(163|126|qq)\.com$", "hmh990506@163.com")
print('match: ',reg2.group()) #匹配的整个表达式的字符串
print(reg2.groups()) #('hmh990506', '163')

#re.search 扫描整个字符串并返回第一个成功的匹配。
reg3 = re.search(r"([a-zA-Z0-9]{4,20})@(163|126|qq)\.com$", "My Email:hmh990506@163.com")
print('search: ',reg3.group())
    
#re.search 扫描整个字符串并返回第一个成功的匹配
print(re.search(r"\d+", "阅读次数为99 99R9999").group()) 

#re.findall寻找所有符合正则的项,并返回匹配列表list[]
#'list' object has no attribute 'group',不需要用.group()
print('findall: ',re.findall(r"\d+", "python:7777,C:456321,C++:9999"))

#re.sub方法将匹配到的项进行替换
print('sub: ',re.sub("\\d+", "998", "python=997,C++=10245"))

#re.split方法根据匹配进行切割字符串,并返回一个列表list[]
print('split: ',re.split(r":| ", "info:hanmh- 21 shanxi"))

import re
# 构造dataframe数据
df_text = pd.DataFrame({
    'sentence': ['#Obama, says goodbye', 'Just a simple, #egg']})

# 将功能封装成一个方法
def find(text):
    h = re.findall(r'#(\w+)', text)
    print(h)
    return ''.join(h)

# pandas 结合 apply和lambda函数处理某列内容
df_text['new'] = df_text['sentence'].apply(lambda x: find(x))
# 清洗掉一些符号
""" (function) def sub(
    pattern: str | Pattern[str],
    repl: str | ((Match[str]) -> str),
    string: str,
    count: int = 0,
    flags: _FlagsType = 0
) -> str """
df_text['sentence']=df_text.sentence.astype('str').apply(
    lambda x: re.sub('[0-9+,,.。…、“”^_?::’‘''""()#();;【】!!*?]+', '', x))
print(df_text)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值