re正则表达式小结

re正则表达式

20.如何写一个正则表达式,匹配每 3 位就有一个逗号的数字?它必须匹配以下数字:

 ‘42’
 ‘1,234’
 ‘6,368,745’
但不会匹配:
 ‘12,34,567’ (逗号之间只有两位数字)
 ‘1234’ (缺少逗号)

栗子:

import re
import requests

text = str(input('请输入测试栗子:'))

regex = re.compile(r'^\d{1,3}(,\d{3})*$')
res = regex.search(text)
print(res)

问题:
1、匹配1到3个数字正确写法:regex = re.compile(r’\d{1,3}’),而不应该是:regex = re.compile(r’\d{,3}’),这样会造成多匹配一个空字符
2、插入字符和美元字符
这里的文本是一个字符串的开始和结尾
而不是文本里面的一段段,你自以为的开始和结尾

21.如何写一个正则表达式,匹配姓 Nakamoto 的完整姓名?你可以假定名字总是出现在姓前面,是一个大写字母开头的单词。该正则表达式必须匹配:

 ‘Satoshi Nakamoto’
 ‘Alice Nakamoto’
 ‘RoboCop Nakamoto’
但不匹配:
 ‘satoshi Nakamoto’(名字没有大写首字母)
 ‘Mr. Nakamoto’(前面的单词包含非字母字符)
 ‘Nakamoto’ (没有名字)
 ‘Satoshi nakamoto’(姓没有首字母大写)

栗子:

import re
import requests

text = str(input('请输入测试栗子'))

regex = re.compile(r'^[A-Z](\w)* Nakamoto$')
res = regex.search(text)
print(res)

问题:
匹配大写字母的是建立特殊类[A-Z]
\W是匹配单词外的字符

22.如何编写一个正则表达式匹配一个句子,它的第一个词是 Alice、Bob 或Carol,第二个词是 eats、pets 或 throws,第三个词是 apples、cats 或 baseballs。该句子以句点结束。这个正则表达式应该不区分大小写。它必须匹配:

 ‘Alice eats apples.’
 ‘Bob pets cats.’
 ‘Carol throws baseballs.’
 ‘Alice throws Apples.’
 ‘BOB EATS CATS.’
但不匹配:
 ‘RoboCop eats apples.’
 ‘ALICE THROWS FOOTBALLS.’
 ‘Carol eats 7 cats.’

栗子:

import re
import requests

text = str(input('请输入测试栗子:'))

regex = re.compile(r'(Alice|Bob|Carol) (eats|pets|throws) (apples|cats|baseballs).$',re.I)
res = regex.search(text)
print(res)

7.18.1 强口令检测

写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字。你可能需要用多个正则表达式来测试该字符串,以保证它的强度。

栗子:

import re
import requests

def f(text):
    if len(text) >= 8:      #确保长度
        regex = re.compile(r'\d+')  #确保至少一位数字
        if regex.search(text) == None:
            return False
        regex = re.compile(r'[A-Z]+') #确保至少一位大写字母
        if regex.search(text) == None:
            return False
        regex = re.compile(r'[a-z]+')  # 确保至少一位小写字母
        if regex.search(text) == None:
            return False
        else:
            return True
    else:
        return False

text = input("请输入强口令:")
t = f(text)
if t == True:
    print("你输入的强口令合法!")
else:
    print("你输入的强口令非法!")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值