###content:请你来实现一个 atoi 函数，使其能将字符串转换成整数。
###首先，该函数会根据需要丢弃无用的开头空格字符，直到寻找到第一个非空格的字符为止。
###当我们寻找到的第一个非空字符为正或者负号时，则将该符号与之后面尽可能多的连续数字组合起来，作为该整数的正负号；
###假如第一个非空字符是数字，则直接将其与之后连续的数字字符组合起来，形成整数。
###该字符串除了有效的整数部分之后也可能会存在多余的字符，这些字符可以被忽略，它们对于函数不应该造成影响。

###注意：
###假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时，则你的函数不需要进行转换。函数不能进行有效的转换时，返回0。
###说明：
###假设我们的环境只能存储 32 位大小的有符号整数，那么其数值范围为[−2^31, 2^31−1]。如果数值超过这个范围，请返回INT_MAX(2^31-1)或INT_MIN(−2^31) 。

###示例 1:
###输入: "4193 with words"
###输出: 4193

###solution:
###正则表达式 —— 一条语句结束
class Solution:
    def myAtoi(self, str: str) -> int:
        # python的re库用于完全的正则表达式，
        # re.findall(pattern, string, flag)返回全局匹配的所有结果到一个list中, 若匹配失败返回None;
        # re.search(,,)返回第一个成功的匹配，如果匹配失败，则返回None;
        # re.match(,,)必须从字符串开头进行匹配，如果开头不匹配，则为匹配失败None;
        # re.search()和re.match()函数返回结果包括分组()时，group(0)返回完整匹配的字符串，group(1)及以上分别返回各分组字符串。groups()函数返回各分组组成的元组对象。
        
        # int(*[list])中的*[list]能够将列表变为字符串类型,而匹配失败导致[list]为None时，int(*None)=0
        
        # str.lstrip()清除str左端指定的字符（默认为空格）或字符序列，str.rstrip()清除右端，str.strip()清除两端
        return max(min(int(*re.findall('^[\+\-]?\d+', str.lstrip())), 2**31 - 1), -2**31)
        # 由于python不存在32位整数及其越界问题，故本解法未考虑率越界情况
