python正则表达式不同用法的实例

例子1:验证输入用户名和QQ号是否有效并给出对应的提示信息。

'''
验证输入用户名是否有效, 并给出对应的提示信息

要求: 用户名必须由字母, 数字或下划线构成, 且长度在6~20个字符之间, QQ号, 是5~12的数字, 且首位不能为0
'''

import re
def main():
    username = input('请输入用户名: ')
    qq = input('请输入qq号')
    # match函数的第一个参数识正则表达式字符串或正则表达式对象
    # 第二个参数是要跟正则表达式做匹配的字符串对象
    m1 = re.match(r'^[0-9a-z-A-Z_]{6,20}$', username)
    if not m1:
        print('请输入有效的用户名')
    m2 = re.match(r'^[1-9]\d{4,11}$', qq)
    if not m2:
        print('请输入有效的 qq 号')
    if m1 and m2:
        print('你输入的信息是有效的')

if __name__ == '__main__':
    main()
请输入用户名: ksdkfj12435
请输入qq号skdfj23435
请输入有效的 qq 号

例子2:从一段文字中提取出国内手机号码。

import re
def main():
    pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')
    sentence = '''
    重要的事情说8130123456789遍,我的手机号是13512346789这个靓号,
    不是15600998765,也是110或119,王大锤的手机号才是15600998765。
    '''
    # 查找所有匹配并保存到一个列表中
    mylist = re.findall(pattern, sentence)
    print(mylist)
    print('-------------华丽分割--------------')
    # 通过迭代其器取出匹配对象并获得匹配的内容
    for temp in pattern.finditer(sentence):
        print(temp.group())
    print('--------------华丽分割--------------')
    # 通过search函数制定搜索位置找出所有的匹配
    m = pattern.search(sentence)
#     while m:
#         print(m.group())
#         m = pattern.search(sentence)
if __name__ == '__main__':
    main()
['13512346789', '15600998765', '15600998765']
-------------华丽分割--------------
13512346789
15600998765
15600998765
--------------华丽分割--------------

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

import re
def main():
    sentence = '你丫是傻叉吗? 我操你大爷的. Fuck you.'
    purified = re.sub('[操肏艹]|fuck|shit|傻[比屄逼叉缺吊屌]|煞笔', '*', sentence, flags = re.IGNORECASE)
    print(purified)

if __name__ == '__main__':
    main()
你丫是*吗? 我*你大爷的. * you.

例子4:拆分长字符串

import re
def main():
    poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。'
    sentence_list = re.split(r'[,。,.]', poem)
    while '' in sentence_list:
        sentence_list.remove('')
        print(sentence_list)
if __name__ == '__main__':
    main()
['窗前明月光', '疑是地上霜', '举头望明月', '低头思故乡']

你可能感兴趣的:(❥python)