Python一百天之第12天笔记:字符串和正则表达式

正则表达式

githubPython一百天,第12天:字符串和正则表达式看到了一个很好的介绍正则表达式的博客,这里推荐给大家,《正则表达式30分钟入门教程》

代码说明实例说明
.匹配除换行符(\n)以外的任意字符monk.y匹配monkey、monk$y…
\b匹配边界\bmonkey\b在"I’m a code monkey"中匹配monkey
\w匹配字母或数字或下划线monk\wy匹配monkey、monkay…
\d匹配数字monk\dy匹配monk1y、monk2y…
^匹配字符串的开头^monkey匹配以monkey开头的字符串
$匹配字符串的结尾monkey$匹配以monkey结尾的字符串
*重复零次或更多次monkey*匹配空字符、monkey、monkeymonkey…
+重复一次或更多次monkey+匹配monkey、monkeymonkey…
重复零次或一次monkey?匹配空字符、monkey
{n}重复n次\d{3}匹配123、666…
{n,}至少重复n次\d{3}匹配123、6666…
{n1,n2}重复n1到n2次(闭区间)\d{3, 6}匹配123、666666…

反义表:

代码说明
\B匹配非边界
\W匹配非字母和非数字和非下划线
\D匹配非数字
[^m]匹配除了m以外的任意字符
[^monkey]匹配除了monkey这几个字母以外的任意字符

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

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

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

def main():
    username = input("请输入用户名:")
    qq = input("请输入QQ号:")
    # 使用正则表达式需要调用re模块
    # match函数的第一个参数是正则表达式,第二个参数是需要匹配的字符串
    m1 = re.match(r'^[a-zA-Z0-9_]{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()

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

   import re


def main():
    pattern = re.compile(r'(?<=\D)\d{11}(?=\D)')
    sentence = '''
    重要的事情说8130123456789遍,我的手机号是13512346789这个靓号,
    不是15600998765,也是110或119,王大锤的手机号才是15600998765。
    '''
    mylist = re.findall(pattern, sentence)
    print(mylist)

if __name__ == '__main__':
    main()

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

有脏话,审核未通过…

# 例题4:拆分长字符串
```python
import re


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

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值