Python正则表达式进阶

re模块使用

  • match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。例如:
import re
par = re.match(r'^\d{3}\-\d{3,8}$', '021-6444651')
print(par)

结果:<_sre.SRE_Match object; span=(0, 11), match='021-6444651'>

  • 字符串分割:正则表达式切分字符串比用固定的字符更加灵活。例如:
str = re.split(r'[\s\,]+', 'a, b  , ,c')
print(str) # ['a', 'b', 'c']
  • 字符串分组:正则表达式还有提取子串的强大功能,用()表示的就是要提取的分组。如:^(\d{3})-(\d{3,8})$ 定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。
match = re.match(r'^(\d{3})\-(\d{3,8}$)', '021-6444651')
print(match.group(0))#021-6444651
print(match.group(1))#021
print(match.group(2))#6444651

【牢记】group(0)始终是原始字符串,group(1)、group(2)...表示第1、2...个子串。

  • 贪婪匹配:正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。例如:
match = re.match(r'^(\d+?)(0*)$','10009000').groups()
print(match) #('1000','9000')
  • 正则表达式的预编译:如果一个正则表达式要重复使用多次次,出于效率的考虑,我们可以预编译该正则表达式,接下来使用时跳过编译编译,直接匹配。
 import re
# 编译: 
 re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')

你可能感兴趣的:(Python正则表达式进阶)