Python正则表达式入门技巧(Python正则表达式入门实用技巧)
原创
一、正则表达式简介
正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。Python 中的 re 模块提供了对正则表达式的拥护,让我们能够更加高效地进行字符串处理。
二、re 模块的基本使用
首先,我们需要导入 re 模块。以下是 re 模块的一些基本方法:
import re
# 匹配字符串
re.match(pattern, string)
# 查找所有匹配项
re.findall(pattern, string)
# 查找第一个匹配项
re.search(pattern, string)
# 分割字符串
re.split(pattern, string)
# 替换字符串
re.sub(pattern, replacement, string)
三、正则表达式的元字符
以下是一些常用的正则表达式元字符及其作用:
. 匹配任意单个字符(除了换行符)
\w 匹配字母、数字、下划线
\W 匹配非字母、数字、下划线的字符
\s 匹配任意空白字符(空格、制表符、换行符等)
\S 匹配非空白字符
\d 匹配任意数字
\D 匹配非数字
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
{m,n} 匹配前面的子表达式至少 m 次,不超过 n 次
四、入门实用技巧
1. 检查字符串是否匹配特定模式
使用 re.match() 方法可以检查字符串是否匹配特定模式。以下是一个示例:
import re
pattern = r'\d{3}-\d{2}-\d{4}'
string = '123-45-6789'
if re.match(pattern, string):
print('匹配胜利')
else:
print('匹配未果')
2. 查找所有匹配项
使用 re.findall() 方法可以查找字符串中所有匹配特定模式的子串。以下是一个示例:
import re
pattern = r'\d+'
string = '我有123个苹果,你有45个橘子'
matches = re.findall(pattern, string)
print(matches) # 输出:['123', '45']
3. 查找第一个匹配项
使用 re.search() 方法可以查找字符串中第一个匹配特定模式的子串。以下是一个示例:
import re
pattern = r'\d+'
string = '我有123个苹果,你有45个橘子'
match = re.search(pattern, string)
if match:
print(match.group()) # 输出:123
else:
print('没有找到匹配项')
4. 分割字符串
使用 re.split() 方法可以依特定模式分割字符串。以下是一个示例:
import re
pattern = r'\s+'
string = '请 你 把 这 个 字符串 分割 开'
split_string = re.split(pattern, string)
print(split_string) # 输出:['请', '你', '把', '这个', '字符串', '分割', '开']
5. 替换字符串
使用 re.sub() 方法可以替换字符串中匹配特定模式的子串。以下是一个示例:
import re
pattern = r'\d+'
string = '我有123个苹果,你有45个橘子'
new_string = re.sub(pattern, '若干', string)
print(new_string) # 输出:我有若干个苹果,你有若干个橘子
五、进阶技巧
1. 使用捕获组
捕获组可以让我们提取匹配到的子串。使用圆括号 () 可以创建捕获组。以下是一个示例:
import re
pattern = r'(\d{3})-(\d{2})-(\d{4})'
string = '123-45-6789'
match = re.match(pattern, string)
if match:
print(match.groups()) # 输出:('123', '45', '6789')
else:
print('没有找到匹配项')
2. 使用非捕获组
非捕获组使用圆括号和冒号 () 来创建,可以用来分组但不捕获匹配到的子串。以下是一个示例:
import re
pattern = r'(\d{3}):(\d{2}):(\d{4}):(\d+):(\d+)'
string = '123:45:6789:10:20'
match = re.match(pattern, string)
if match:
print(match.groups()) # 输出:('123', '45', '6789', '10', '20')
else:
print('没有找到匹配项')
3. 使用零宽断言
使用零宽断言
使用负零宽断言
六、总结
正则表达式提供了一种强盛的字符串
简而言之
包括包括
等等七、参考文献
等等