Python正则表达式速查表
在Python开发中,正则表达式被广泛用于文本处理、模式匹配、字符串提取等场景。Python内置的re模块提供了支持正则表达式的函数和方法,使用起来非常灵活方便。本文将为大家介绍一份Python正则表达式速查表,能够帮助初学者快速了解和掌握Python正则表达式的基本语法、特殊字符和常用方法。
1. 正则表达式语法
正则表达式语法的基础包括:字符、元字符、方括号、圆括号、限定符和锚字符。其中,字符、方括号和圆括号用于匹配具体的字符和字符集合,元字符和限定符用于描述匹配字符串的模式,锚字符用于匹配字符串的位置。下面是Python正则表达式语法的基本元素:
字符:用于匹配具体的字符,例如字母、数字、空格等。例如,字符c可以匹配字符串中包含字母c的位置。
元字符:用于描述匹配字符串的模式,例如通配符、重复次数和位置等信息。例如,元字符.可以匹配任意一个字符,元字符*表示匹配前一个字符的零个或多个出现。
方括号:用于匹配字符集合,例如字母表中的任意一个字符。例如,字符集合[abc]可以匹配字符串中包含字母a、b或c的位置。
圆括号:用于分组和捕获匹配的内容。例如,圆括号内的表达式可以作为一个整体进行重复匹配,同时也可以通过编组号或名称来捕获匹配的内容。
限定符:用于描述匹配字符串的重复次数。例如,限定符?表示匹配前一个字符的零个或一个出现,限定符+表示匹配前一个字符的一个或多个出现。
锚字符:用于匹配字符串的位置。例如,锚字符^表示匹配字符串的开头位置,锚字符$表示匹配字符串的结尾位置。
2. 正则表达式特殊字符
在Python正则表达式中,有一些特殊字符具有特殊的含义和用途,需要特别注意。这些特殊字符包括:
.:匹配除换行符之外的任意字符。
^:匹配字符串的开头位置。
$:匹配字符串的结尾位置。
*:匹配前一个字符的零个或多个出现。
+:匹配前一个字符的一个或多个出现。
?:匹配前一个字符的零个或一个出现。
{m,n}:匹配前一个字符的m到n次出现。
\:转义字符,用于取消特殊字符的含义。
[]:字符集合,匹配方括号中的任意一个字符。
[^]:否定字符集合,匹配除方括号内的字符之外的任意一个字符。
(?i):忽略大小写匹配。
(?s):单行模式匹配,使元字符.可以匹配换行符。
(?m):多行模式匹配,使锚字符^和$可以匹配字符串中每行的开头和结尾位置。
3. re模块常用方法
Python的re模块提供了丰富的函数和方法,用于支持正则表达式匹配和处理。其中,常用的方法包括:
re.search(pattern, string, flags=0):在字符串中搜索匹配正则表达式的第一个位置,并返回匹配对象。
re.match(pattern, string, flags=0):在字符串的开头位置匹配正则表达式,并返回匹配对象。
re.findall(pattern, string, flags=0):在字符串中搜索匹配正则表达式的所有位置,并返回一个匹配结果的列表。
re.sub(pattern, repl, string, count=0, flags=0):使用替换字符串替换字符串中匹配正则表达式的所有位置,并返回替换后的新字符串。
re.split(pattern, string, maxsplit=0, flags=0):使用正则表达式分割字符串,返回分割后的子串列表。
re.finditer(pattern, string, flags=0):在字符串中搜索匹配正则表达式的所有位置,并返回一个迭代器,每个元素为匹配的对象。
4. 实例分析
示例1:匹配邮件地址
匹配邮件地址的正则表达式如下:
import re
pattern = r'\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*'
email = 'example@gmail.com'
result = re.search(pattern, email)
if result:
print(result.group())
else:
print('No match')
输出结果如下:
example@gmail.com
示例2:匹配IP地址
匹配IP地址的正则表达式如下:
import re
pattern = r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$'
ip = '192.168.0.1'
result = re.match(pattern, ip)
if result:
print(result.group())
else:
print('No match')
输出结果如下:
192.168.0.1
5. 总结
Python正则表达式是进行文本处理和模式匹配的重要工具,具有灵活、简洁、高效的特点。本文介绍了Python正则表达式的基本语法、特殊字符和常用方法,同时通过实例分析应用到实际开发中。希望本文能够帮助大家更加深入地理解和掌握Python正则表达式,为开发工作提供便利。