正则表达式

在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要,正则表达式就是描述这些规则的工具,它定义了字符串的匹配模式。

正则表达式基本符号:

匹配任意字符:. ,

匹配字母数字下划线: \w

匹配空白字符:\s

匹配数字:\d

匹配单词的边界:\b

匹配字符串的开始:^ 匹配字符串的结束:$

匹配非字母数字下划线:\W

匹配非空白字符:\S

匹配非数字:\D

匹配非单词边界:\B

匹配来自字符的任意单一字符:[]

匹配不在字符集中的任意单一字符:[^]

匹配0次或多次:*

匹配1次或多次:+

匹配0次或1次: ?

匹配N次:{N}

匹配至少M次:{M,}

匹配至少M次,至多N次:{M,N}

分支:|

注释“:(?#)

匹配exp并捕获到自动命名的组中:(exp)

匹配exp并捕获到名为name的组中:(?<name>exp)

匹配exp但是不捕获匹配的文本:(?:exp)

匹配exp前面的位置:(?=exp)

匹配exp后面的位置:(?<=exp)

匹配后面不是exp的位置:(?!exp)

匹配前面不是exp的位置:(?<!exp)

重复任意次,但尽可能少重复:*?

重复1次或多次,但尽可能少重复:+?

重复0次或一次,但尽可能少重复:??

重复M到N次但尽可能少重复:{m,n}?

重复M次以上但尽可能少重复:{m,}?

python对正则表达式的支持:

re模块函数:

compile(pattern,flags=0) 编译正则表达式返回正则表达式对象

match(pattern,string,flags=0) 用正则表达式匹配字符串,成功返回匹配对象,否则None

search(pattern,string,flags=0) 搜索字符串第一次出现正则表达式的模式同上

split(pattern,string,maxsplit=0,flags=0) 用正则表达式指定的模式分隔符拆分字符串返回列表

sub(pattern,repl,string,count=0,flags=0) 用指定的字符串替换原字符串中与正则表达式匹配的模式可以用count指定替换的次数

fullmatch(pattern,string,) match函数的完全匹配版本

findall(pattern,string,flags) 查找字符串所有与正则表达式匹配的模式,返回字符串的列表

finditer(pattern,string,flags) 查找字符串所有与正则表达式匹配的模式,返回一个迭代器

purge() 清除隐式编译的正则表达式的缓存

re.l / re.IGNORECASE :忽略大小写匹配标记

re,M / re.MULTILINE: 多行匹配标记

验证用户名信息;

import re




def main():
    username = input('请输入用户名: ')
    qq = input('请输入QQ号: ')
    a1 = re.match(r'^[0-9a-zA-Z_]{6,20}$', username)
    if not a1:
        print('请输入有效的用户名.')
    a2 = re.match(r'^[1-9]\d{4,11}$', qq)
    if not a2:
        print('请输入有效的QQ号.')
    if a1 and a2:
        print('你输入的信息是有效的!')




if __name__ == '__main__':
    main()

提取电话号:

import re


def main():
    pattern = re.compile(r'(?<=\D)1[345678]\d{9}(?=\D)')
    sentence ="""
    小明今年上6年级,爸爸在110工作,电话号是13254655654,他自己的电话号是15865487536
   """
    mylist = re.findall(pattern,sentence)
    print(mylist)
    print('*****分隔符号******')
    for temp in pattern.finditer(sentence):
        print(temp.group())
    print('*****分隔符号******')
    a = pattern.search(sentence)
    while a:
        print(a.group())
        a = pattern.search(sentence, a.end())


if __name__ == '__main__':
    main()

替换字符串中的不良内容:

import re


def main():
    sentence = '你是猪'
    b = re.sub('[猪]','*', sentence,flags = re.IGNORECASE)
    print(b)


if __name__ == '__main__':
    main()

拆分长字符串:

import re


def main():
    sentence = '你眼中倒影的星河烂漫,是我不曾见过的世外梦幻。'
    list = re.split(r'[, 。]',sentence)
    while '' in list:
        list.remove('')
    print(list)


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值