Logo
Section 1 / 12

Python 正则表达式 `match` 函数

Python 正则表达式 match() 函数详解及示例

导入

Python 正则表达式 `match` 函数

Python 正则表达式 match() 函数详解及示例

match 函数

match 函数尝试将一个正则表达式 re 模式与字符串进行匹配,支持可选的标志位(flags)。

该函数的语法如下:

1re.match(pattern, string, flags=0)

其中:

  • pattern 是要匹配的正则表达式;
  • string 是待搜索的字符串,match 仅在字符串的开头尝试匹配;
  • flags 是可通过按位或运算符(|)组合使用的不同标志位。

匹配标志(Match Flags)

修饰符说明
re.I执行不区分大小写的匹配。
re.L根据当前区域设置(locale)解释单词,影响字母类(\w 和 \W)以及词边界行为(\b 和 \B)。
re.M使 $ 匹配行尾,^ 匹配任意一行的行首。
re.S使点号(.)匹配包括换行符在内的所有字符。
re.U根据 Unicode 字符集解释字母,影响 \w、\W、\b、\B 的行为。
re.X忽略正则表达式中的空白字符(除非在字符集 [] 内或被反斜杠转义),并将未转义的 # 视为注释开始。

返回值

  • re.match 函数在匹配成功时返回一个 匹配对象(match object),失败时返回 None。
  • 可使用匹配对象的 group(n) 或 groups() 方法获取匹配到的内容:
    • group(n=0) 返回整个匹配结果,若指定 n 则返回第 n 个子组;
    • groups() 返回包含所有子组匹配内容的元组(若无子组则为空元组)。

示例 1

查找单词 to 前后的词语:

1#!/usr/bin/python 2import re 3 4line = "Learn to Analyze Data with Scientific Python" 5 6m = re.match(r'(.*) to (.*?) .*', line, re.M|re.I) 7 8if m: 9 print("m.group() : ", m.group()) 10 print("m.group(1) : ", m.group(1)) 11 print("m.group(2) : ", m.group(2)) 12else: 13 print("No match!!")

第一个子组 (.*) 匹配到字符串:Learn,第二个子组 (.*?) 匹配到:Analyze。

示例 2

groups([default]) 返回一个元组,包含匹配中所有的子组(从第1个开始,直到模式中定义的所有组):

1#!/usr/bin/python 2import re 3 4line = "Learn Data, Python" 5 6m = re.match(r'(\w+) (\w+)', line, re.M|re.I) 7 8if m: 9 print("m.groups() : ", m.groups()) 10 print("m.group(1, 2) : ", m.group(1, 2)) 11else: 12 print("No match!!")

示例 3

groupdict([default]) 返回一个字典,包含所有命名子组的匹配结果,键为子组名称:

1#!/usr/bin/python 2import re 3 4number = "124.13" 5 6m = re.match(r'(?P<Expotent>\d+)\.(?P<Fraction>\d+)', number) 7 8if m: 9 print("m.groupdict() : ", m.groupdict()) 10else: 11 print("No match!!")

示例 4

start、end:如何匹配字符串的开头或结尾?可以使用 \A 和 \Z 元字符。我们用反斜杠对其进行转义。可用于匹配以特定字母开头或以某字符结尾的字符串。

1import re 2 3values = ["Learn", "Live", "Python"] 4 5for value in values: 6 # 匹配字符串开头 7 result = re.match(r"\AL.+", value) 8 if result: 9 print("START MATCH [L]:", value) 10 11 # 匹配字符串结尾 12 result2 = re.match(r".+n\Z", value) 13 if result2: 14 print("END MATCH [n]:", value)

示例 5

start([group]) 和 end([group]) 方法返回由 group 匹配的子串的起始和结束索引。具体示例请见下一课。

简介

Python 正则表达式 match ( ) 函数 - 编程练习