Python基础教程之正则表达式基本语法以及re模块
正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。Python中,re模块提供了一系列函数来操作正则表达式。本攻略将详细讲解正则表达式的基本语法、常用符号以及re模块的常用方法,包search()、match()、findall()、sub()等。
正则表达式基本语法
正则表达式由普通字符和特殊字符组成。普通字符包括大小写字母、数字和一些标点符号,特殊字符包括元字符和转义字符。
元字符是正则表达式中具有特殊含义的字符,包括:
.
:匹配任意字符,除换行符。*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。^
:匹配字符串的开头。$
:匹配字符串的结尾。[]
:匹配括号中的任意一个字符。()
:将括中的字符作为一个整体进行匹配。|
:匹配两个或多个正则表达式中的任一个。
转义字符于将特殊字符转义为普通字符,包括\
、\d
、\s
、\w
等。
下面是一个例子,演示如何使用正则表达式匹配字符串中的数字:
import re
text = 'The price is $1099.'
pattern = r'\d+'
result = re.findall(pattern, text)
if:
print('Matches found:', result)
else:
print('Matches not found')
在上面的代码中,我们使用正则表达式\d+
匹配字符串中的数字。\d
表示匹配一个数字字符,+
表示匹配一个或多个。findall函数返回匹配的结果。运行代码后,输出结果为
Matches found: [‘1099’]`。
re模块常用方法
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)
:在字符串中搜索正则表达式的所有匹配项,并将其替换为指定的字符串。
其中,pattern表示正则表达式,string表示匹配字符串,flags表示正则表达式的匹配模式。
下面是一个例,示范如何使用re模块的search()函数:
import re
text = 'The quick brown fox jumps over the lazy dog.'
pattern = r'fox'
result = re.search(pattern, text)
if result:
print('Match found:', result.group())
else:
print('Match not found')
在上面的代码中,我们使用正则表达式fox
匹配字符串中的fox
。search()
用于在字符串中搜索正则表达式的第一个匹配项。运行代码后,结果为Match found: fox
。
示例1:匹配HTML标签中的文本内容
下面是一个例子,演示如何使用正则表达式匹配HTML标签中的文本内容:
import re
text = '<h1>Welcome to website</h>'
pattern = r'<.*?>(.*?)</.*?>'
result = re.search(pattern, text)
if result:
print('Match found:', result.group(1))
else:
print('Match not found')
在上面的代码中,我们使用正则表达式<.*?>(.*?)<!--.*?-->
匹配HTML标签中文本内容。<.*?>
表示匹配一个或多个任意字符,.*?
表示非贪婪匹配,()
中的.*?
匹配到的字符串作为捕获组。search()
用于在字符串中搜索正表达式的第一个匹配项。运行代码,输出结果为Match found: Welcome to my website
。
示例2:提取网页中的图片链接
下面是另一个例子,演示如何使用正则表达式提取网页中的图片链接:
import re
import requests
url = 'https://www.example.com'
response = requests.get(url)
html = response.text
pattern = r'<img.*?src="(.*?)".*?>'
result = re.findall(pattern, html)
if result:
print('Matches found:', result)
else:
print('Matches not found')
在上面的代码中,我们使用正则表达式<img.*?src="(.*?)".*?>
匹配网页中的图片链接。<img.*?>
表示匹配img标签,src="(.*?表示匹配src属性中的链接,
()表示匹配到的链接作为捕获组
findall()`函数返回所有匹配的结果。运行后,输出结果为匹配到的图片链接列表。
以上是Python基础教程之正则表达式基本语法以及re模块的常用方法。正则表达式是Python爬虫中常用的具,读者可以通过这些示例更好地理解正则表达式的应用。