正则式匹配

6079. 价格减免

pattern = re.compile(r"^\$(\d+\.?\d*)$")
if pattern.match(w):

匹配以$开头用^ \ $,以数字结尾用$,其中整数部分可以有1个或多个数字用\d+,小数点0个或1个用.?,小数部分0个或者多个用\d*

6095. 强密码检验器 II
至少包含 一个特殊字符 。特殊字符为:"!@#$%^&*()-+" 中的一个。使用\W,这个是re模块自带的

class Solution:
    def strongPasswordCheckerII(self, password: str) -> bool:
        if len(password) < 8: return False
        for i in range(1, len(password)):
            if password[i] == password[i - 1]:
                return False
        pattern1 = re.search(r"\d",password)     # <re.Match object; span=(7, 8), match='3'>
        pattern2 = re.search(r"[a-z]",password)  # <re.Match object; span=(1, 2), match='l'>
        pattern3 = re.search(r"[A-Z]",password)  # <re.Match object; span=(0, 1), match='I'>
        pattern4 = re.search(r"\W",password)     # <re.Match object; span=(13, 14), match='!'>
        # print(pattern2)
        if pattern1 and pattern2 and pattern3 and pattern4:
            return True
        else:
            return False

匹配并替换:

score=re.sub("\d/","X",score)
score = re.sub("-", '0', score)

一个方便显示匹配的网站:
https://regex101.com/

1.将两个及以上的换行符换成一个,两个换行符中间可能有\r等不可见字符

content = re.sub(r'(\s*\n\s*){2,}', '\n', content)

2.两个$符号间的文本包含了换行符\n,默认情况下.将不会匹配这些换行符,导致匹配结果不完整或匹配失败。为了使.匹配换行符,需要使用re.DOTALL或re.S标志,这样.就能匹配任意字符,包括换行符了。

content = re.search(r'\$(.*?)\$', value, re.DOTALL).group(1)

参考资料:
使用Python验证常见的50个正则表达式
保龄球计分
python 正则表达式匹配结果如何输出
如何用python正则表达式匹配字符串?

posted @ 2022-05-29 17:35  YTT77  阅读(30)  评论(0编辑  收藏  举报