栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.括号---组选择

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

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号