一、re.match简介
re是Python正则表达式模块,它提供了一种方便的方式来使用正则表达式。
re模块中的match()方法是最常用的方法。re.match()方法只匹配字符串的开始部分,如果字符串开始部分不匹配,则整个匹配失败,函数返回None。
match()方法的语法如下:
re.match(pattern, string, flags=0)
其中,pattern表示要匹配的正则表达式,string表示要匹配的字符串,flags是一个可选参数,用于控制正则表达式的匹配方式。
二、re.match方法的返回值
当re.match()方法匹配成功,返回一个匹配对象;如果匹配失败,则返回None。
匹配对象有许多属性和方法,可以帮助我们进一步处理匹配结果。
当使用match()方法匹配成功后,可以通过group()方法获取匹配的结果。例如:
import re text = "hello, world" pattern = "hello" result = re.match(pattern, text) print(result.group()) # 输出:hello
此处,首先定义了一个字符串text和一个正则表达式pattern,然后使用match()方法对text字符串进行匹配。由于text字符串的开始部分包含了正则表达式pattern的内容,所以返回了一个匹配对象result。最后,使用group()方法获取匹配到的结果“hello”。
需要注意的是,如果正则表达式中使用了分组,可以通过group()方法获取分组匹配到的结果。例如:
import re text = "hello, world" pattern = "(he)(lo)" result = re.match(pattern, text) print(result.group()) # 输出:hello print(result.group(1)) # 输出:he print(result.group(2)) # 输出:lo
三、re.match方法的用法示例
1、使用re.match()方法验证身份证号码格式是否正确
身份证号码一般由18位数字组成,其中最后一位可以是数字或者X。下面是一个验证身份证号码格式是否正确的示例:
import re def check_id(id_num): pattern = r"^\d{17}(\d|X)$" result = re.match(pattern, id_num) if result: return True else: return False id_num1 = "370781199912011234" id_num2 = "37078119991201123X" id_num3 = "37078119991201123Y" print(check_id(id_num1)) # 输出:True print(check_id(id_num2)) # 输出:True print(check_id(id_num3)) # 输出:False
该示例中,使用了正则表达式“^\d{17}(\d|X)$”来匹配身份证号码。其中,^表示字符串开头,\d表示数字,{17}表示匹配前面的\d重复17次,(\d|X)表示匹配一个数字或者X,$表示字符串结尾。如果匹配成功,返回True;否则,返回False。
2、使用re.match()方法获取HTML页面中的所有链接
下面是一个示例,用于从HTML页面中获取所有链接:
import re import urllib.request def extract_links(url): # 读取网页内容 with urllib.request.urlopen(url) as f: content = f.read().decode('utf-8') # 提取所有链接 pattern = r'href=[\'"](.*?)[\'"]' links = re.findall(pattern, content) return links url = "http://www.baidu.com/" links = extract_links(url) for link in links: print(link)
该示例中,首先使用urllib库访问URL,然后使用正则表达式提取链接地址。正则表达式“href=[\'"](.*?)[\'"]”用于匹配HTML页面中的链接地址。其中,.*?表示匹配任意字符(不包括换行符)任意次,?表示尽可能少地匹配。输出所有获取到的链接地址。
3、使用re.match()方法替换字符串中的数字为星号
下面是一个示例,用于将字符串中的数字替换为星号:
import re def replace_number(text): pattern = r'\d' result = re.sub(pattern, "*", text) return result text = "123abc456def789ghi" result = replace_number(text) print(result) # 输出:“***abc***def***ghi”
该示例中,首先定义了一个字符串text,然后使用正则表达式“\d”匹配数字。使用re.sub()方法将匹配到的数字替换为星号,最后返回替换后的字符串。