【每日一题】8 字符串准换整形(正则化表达式)

正则化练习!

在这里插入图片描述

class Solution(object):
    def myAtoi(self, str):
        """
        :type str: str
        :rtype: int
        """
        INT_MAX = (1<<31)-1   #2147483647    
        INT_MIN = -(1<<31)     #-2147483648
        str = str.lstrip()      #清除左边多余的空格
        num_re = re.compile(r'^[\+\-]?\d+')   #设置正则规则
        num = num_re.findall(str)   #查找匹配的内容
        num = int(*num) #由于返回的是个列表,解包并且转换成整数
        return max(min(num,INT_MAX),INT_MIN)    #返回值

^:匹配字符串开头
[\+\-]:代表一个+字符或-字符
?:前面一个字符可有可无
\d:一个数字
+:前面一个字符的一个或多个
\D:一个非数字字符
*:前面一个字符的0个或多个

正则化

一般正则化可以分为三种操作,

  • 连接操作: AB 表示了{AB}
  • 或操作:AB|C 表示了{AB},{AC}
  • 闭包操作:A*B 表示{B},{AB},{AAB} 表示重复前者0次或多次

优先级顺序:闭包 > 连接 > 或操作,还可以借助括号修改优先级

优化的正则表达式:

  • 字符集描述符:
  1. . 通配符
  2. []指定的集合 [0-9]
  3. [^] 补集 [^1234]任意非1234的字符
  • 闭包的简写
  1. + (AB)+ 表示至少重复一次
  2. ? (AB)?表示重复0次或1次
  3. {2} (AB){2-3}表示出现2次或3次
  • 转义符
  1. \反斜杠表示转义符,\t为制表符,\n为换行符,\s为任意空白符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值