超详细的Python正则表达式入门教程 正则表达式(Regular Expression)是一种广泛应用于文本匹配及文本处理的工具。Python作为一门优秀的编程语言,也自然地支持了正则表达式。本篇文章将带来一份超详细的Python正则表达式入门教程,帮助初学者更好地理解和应用正则表达式。 1.正则表达式基础 在进入Python正则表达式的学习之前,先来简单介绍一下正则表达式的基础概念。 1.1 字符集 字符集是由多个字符组成的集合。比如说,字母表中的26个字母就是一个字符集。在正则表达式中,我们可以定义自己的字符集,用方括号([])来表示。比如说,匹配“hello”和“hola”两个单词,我们可以写成“[ho]l[oa]”。 1.2 量词 量词用于表示某个字符或字符集的重复次数。常见的量词有: *:表示匹配前面的字符或字符集零次或多次。 +:表示匹配前面的字符或字符集一次或多次。 ?:表示匹配前面的字符或字符集零次或一次。 {n}:表示匹配前面的字符或字符集恰好n次。 {n,}:表示匹配前面的字符或字符集n次或更多次。 {n,m}:表示匹配前面的字符或字符集至少n次,至多m次。 1.3 模式修饰符 在正则表达式中,有一些特殊的修饰符,可以改变正则表达式的匹配方式。常见的修饰符包括: i:忽略大小写。 m:多行模式,可以匹配多行文本。 s:点(.)可以匹配换行符。 u:Unicode模式,可以匹配Unicode字符集。 x:忽略空格和注释,可以提高正则表达式的可读性。 2.Python正则表达式模块 Python正则表达式模块是re,我们可以使用import关键字导入该模块。下面是一个简单的例子,可以匹配“cat”或“hat”: ``` python import re text = 'The cat in the hat.' pattern = r'[ch]at' matches = re.findall(pattern, text) print(matches) ``` 输出结果为: ``` ['cat', 'hat'] ``` 3.常用正则表达式实例 下面介绍一些常用的正则表达式实例。 3.1 匹配email地址 以下是一个匹配email地址的正则表达式: ``` python import re text = 'my email is abc123@gmail.com' pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' matches = re.findall(pattern, text) print(matches) ``` \b表示文字边界,A-Za-z0-9._%+-表示email地址的用户名,@[A-Za-z0-9.-]+表示email地址的服务商域名,\.[A-Z|a-z]{2,}表示email地址的后缀名。输出结果为: ``` ['abc123@gmail.com'] ``` 3.2 匹配身份证号码 以下是一个匹配身份证号码的正则表达式: ``` python import re text = 'my id number is 110101199003077577' pattern = r'[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X|x)' matches = re.findall(pattern, text) print(matches) ``` [1-9]\d{5}表示区域码,(19|20)\d{2}表示年份,(0[1-9]|1[0-2])表示月份,(0[1-9]|[12]\d|3[01])表示日期,\d{3}([0-9]|X|x)表示顺序码和校验码。输出结果为: ``` ['110101199003077577'] ``` 3.3 匹配网址 以下是一个匹配网址的正则表达式: ``` python import re text = 'my url is http://www.google.com' pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+' matches = re.findall(pattern, text) print(matches) ``` http[s]?表示http或https协议,(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+表示网址的主体部分。输出结果为: ``` ['http://www.google.com'] ``` 4.总结 本篇文章介绍了正则表达式的基础概念,Python正则表达式模块,以及常用正则表达式实例。正则表达式是一项非常强大的工具,在文本处理、数据清洗等方面有着广泛应用。希望通过本篇文章的学习,大家可以更好地掌握和应用正则表达式。