正则表达式
2025-01-06 本文已影响0人
candice0430
一、单个字符
10a053da2f515d87ecdb09cc389b606.png
二、匹配多个字符
9a2d5f6069ff7cfd0c954c5d27fa3eb.png
三、匹配开头和结尾
dbb4a8324a3af1e5809631790f91be2.png
四、贪婪与非贪婪
image.png
举例:
image.png
image.png
五、(?<=...)和(?=...)
image.png
image.png
六:练习巩固
1.匹配邮箱地址
编写一个正则表达式,匹配有效的邮箱地址。邮箱地址格式如下:
●用户名部分可以包含字母、数字、下划线、点号(.),并且不能以点号开头或结尾。
●域名部分由字母、数字、点号组成,且至少有一个.。
[.].@[\w]+(?!...)[.].*[\w]*[.]$
- 匹配手机号(中国大陆)
编写一个正则表达式,匹配中国大陆的手机号。手机号应满足以下条件:
●以1开头,第二位是3到9之间的数字。
●后面跟着9个数字。
1[3-9][0-9]{9}$
- 匹配IP地址
编写一个正则表达式,匹配IPv4地址。要求:
●每个数字应在0-255之间。
●地址由4个数字组成,每个数字之间用.分隔。
^(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$
- 匹配日期(YYYY-MM-DD格式)
编写一个正则表达式,匹配日期格式为YYYY-MM-DD。要求:
●年份是4位数字。
●月份是01-12。
●日期是01-31。
^([1-9][0-9]{3}-(0[1-9]|[1][0-2])-(0[1-9]|[12][0-9]|3[01]))$
- 提取URL中的域名
编写一个正则表达式,提取URL中的域名部分。要求:
●匹配以http://或https://开头的URL。
●提取主域名部分(例如:www.example.com 或 example.com)。
(http)s?://(www.)?(?!...)[.].[^.]$
- 提取文件扩展名
编写一个正则表达式,提取文件路径中的扩展名。要求:
●扩展名只包含字母、数字、下划线(例如:.txt, .jpg, .py)。
●扩展名部分是点号后跟字母和数字。
[.][\w]+)$
- 匹配时间(24小时制)
编写一个正则表达式,匹配24小时制的时间格式HH:MM。要求:
●时(HH)是00到23之间的数字。
●分(MM)是00到59之间的数字。
^(([0-9]|[01][0-9]|2[0-3]):([0-9]|[0-5][0-9]))$
- 匹配数字(整数或浮动小数)
编写一个正则表达式,匹配整数或浮动小数。要求:
●可以包含小数点。
●可以包含负号。
^(-?[\d]+|-?[\d][.]?[\d]+)$
- 匹配包含空格的字符串
编写一个正则表达式,匹配包含至少一个空格的字符串。
.[\s]+. - 匹配重复的单词
编写一个正则表达式,匹配文本中重复出现的单词,忽略大小写。确保匹配两个连续重复的单词。 - 提取HTML标签中的文本内容
编写一个正则表达式,提取HTML标签中的文本内容,忽略标签。例如,提取<p>hello</p>中的hello。
(?<=<[>]+>).*(?=<[>]+>) - 匹配以特定字符开头和结尾的字符串
编写一个正则表达式,匹配以字母a开头并以字母z结尾的字符串,中间可以包含任何字符。
^a.*z$ - 匹配身份证号码
编写一个正则表达式,匹配中国大陆的身份证号码。要求:
●18位数字,其中最后一位可以是字母X。
●前17位为数字。
^(\d{18}) - 替换字符串中的数字为字符
编写一个正则表达式,将字符串中的所有数字替换为#。
import re
# 输入字符串
input_string = "My phone number is 123-456-7890 and my zip code is 98765."
# 使用 re.sub() 方法将所有数字替换为 #
result = re.sub(r'\d', '#', input_string)
# 输出结果
print(result) # 输出:My phone number is ###-###-#### and my zip code is #####.
- 匹配以特定单词为开头或结尾的字符串
编写一个正则表达式,匹配以start为开头或以end为结尾的字符串。
^start.|.end$ - 匹配网址中查询参数
编写一个正则表达式,提取URL中的查询参数部分。示例URL:http://example.com?name=John&age=30,需要提取name=John和age=30。
(?<=?).* - 提取字符串中的数字
编写一个正则表达式,提取字符串中的所有数字。确保能够提取所有的连续数字并且忽略字母和其他符号。
(?<=.)[\d]+(?=.) - 匹配带有空格和其他符号的字符串
编写一个正则表达式,匹配包含空格、标点符号和字母数字的字符串。
[\S]*[\s].+ - 匹配合法的HTML标签
编写一个正则表达式,匹配符合HTML标签规则的字符串。例如:<div>content</div>,要求匹配<div>标签。
<(?<=<)[\w]*(?=>)> - 提取URL路径中的文件名
编写一个正则表达式,提取URL路径中的文件名(不包括扩展名)。例如,http://example.com/path/to/file.txt,应提取file。
(?<=[^/]/)[\w]*(?=.)