python:正则表达的常用元字符介绍及使用

1.点(.)匹配除换行以外的任意单个字符

比如从下述文本中找出所有的颜色
    苹果是绿色的
    橙子是橙色的
    香蕉是黄色的
    乌鸦是黑色的
    
实现:

import re
text='''
    苹果是绿色的
    橙子是橙色的
    香蕉是黄色的
    乌鸦是黑色的
'''
    p=re.compile(r'.色')  #compile是将字符串实现成patterr模式
    for one in p.findall(text):  #找到所有符合条件的类型
            print(one)


2. 星号-重复匹配任意次
 *---表示匹配前面的子表达式任意次,包括0次

 比如,从下面文本中选择每行逗号后面的字符串内容,包括逗号本身。

    ---采用 ,.*

实现:

text='''
    苹果,是绿色的
    橙子,是橙色的
    香蕉,是黄色的
    乌鸦,是黑色的
'''
    p=re.compile(r',.*')  #compile是将字符串实现成patterr模式
    for one in p.findall(text):  #找到所有符合条件的类型
            print(one)


3.加号---重复匹配多次
 +---表示匹配前面的子表达式一次或多次,不包括一次
 比如,从下面文本中选择每行逗号后面的字符串内容

实现:

text='''
    苹果,是绿色的
    橙子,是橙色的
    香蕉,是黄色的
    乌鸦,是黑色的
    猴子,
'''
    p=re.compile(r',.+')  #compile是将字符串实现成patterr模式
    for one in p.findall(text):  #找到所有符合条件的类型
            print(one)

4.花括号---匹配指定次数
 {}-----花括号表示前面的字符匹配指定的次数
 比如,下面文本
 text='''
    红彤彤,绿油油,黑乎乎,黑乎乎乎乎

'''

表达式 呼{3,4}---表示匹配连续的乎字至少3次,至多4次

texts='''
    红彤彤
    绿油油
    黑乎乎
    黑乎乎乎乎
'''
pp=re.compile(r'.+乎{2,4}')
for onee in pp.findall(texts):
    print(onee)


5. 反斜杠(\)----表示位于\之后的为转义字符
 
 比如,我们要再下面的文本中搜索所有点前面的字符串,也包括点本身

    苹果.是绿色的
    橙子.是橙色的
    香蕉.是黄色的
    
 从前面的点和*的学习来做,及.*.--------这样做对吗????

    原因在于,我们搜索的字符本身就包含了元字符,这样则会出错

    这里采用反斜杠(\)来表示:.*\.

  程序如下:    

text1='''

    苹果.是绿色的
    橙子.是橙色的
    香蕉.是黄色的
    '''
    p1=re.compile(r'.*\.')
    for one1 in p1.findall(text1):
            print(one1)
  输出结果:

    苹果.
    橙子.
    香蕉.

6. \w---匹配任何字母---不管中文、英文、还是下划线

  比如:取一串数字中的所有字符如,张三,tory,李四

  程序如下:    

soure='''
    张三,tory,李四
    '''
    p2=re.compile(r'\w{1,4}')

    print(p2.findall(soure))

 输出结果:
     ['张三', 'tory', '李四']

 思考:如何自取英文字符‘tory’??


7.中括号[]---匹配位于[]中的任意一个字符

 如采用方括号读取有效电话好号码:

    张三,13516342568,11
    
    李四,1b36548952,12    王五,13116542659
    
  程序:
 
    

value1='''
    张三,13516342568,11
    李四,1b36548952,12
    王五,13116542659
    '''

    p3=re.compile(r'1[3]\d{9}')
    print(p3.findall(value1))

  输出结果:

    ['13516342568', '13116542659']

8. 起始位置(^)-----表示匹配文本的起始位置

 如果是多行模式,表示匹配文本每行的开头位置
 
 比如,你需要从下面的文本中,选择每行逗号前面的字符串,也包括逗号本身。

 苹果,苹果是绿色的
 橙子,橙子是橙色的
 香蕉,香蕉是黄色的

 ---采用正则表达式^.*, 

程序:
  
 

 value2='''
  苹果,苹果是绿色的
  橙子,橙子是橙色的
  香蕉,香蕉是黄色的
  '''
 p4=re.compile(r'^.*,',re.MULTILINE)
 print(p4.findall(value2))

 输出结果:

 ['苹果,', '橙子,', '香蕉,']


9.括号---组选择

 括号称之为 正则表达式的组选择。是从正则表达式匹配的内容分里面扣取除其中的某些部分
 
 前面,我们有个例子,从下面的文本中,选择每行逗号前面的字符串,也包括逗号本身。
  
  苹果,苹果是绿色的
  橙子,橙子是橙色的
  香蕉,香蕉是黄色的

 现要求不需要包括逗号----则不能写成^.*,

 在这里逗号是特征所在,如果去掉它,就没法找逗号前面的了

 因此,选择适用组选择符:括号
  
 写成----^(.*),
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋刀鱼程序编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值