正则表达式

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. 匹配手机号(中国大陆)
    编写一个正则表达式,匹配中国大陆的手机号。手机号应满足以下条件:
    ●以1开头,第二位是3到9之间的数字。
    ●后面跟着9个数字。

1[3-9][0-9]{9}$

  1. 匹配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])$

  1. 匹配日期(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]))$

  1. 提取URL中的域名
    编写一个正则表达式,提取URL中的域名部分。要求:
    ●匹配以http://或https://开头的URL。
    ●提取主域名部分(例如:www.example.comexample.com)。

(http)s?://(www.)?(?!...)[.].[^.]$

  1. 提取文件扩展名
    编写一个正则表达式,提取文件路径中的扩展名。要求:
    ●扩展名只包含字母、数字、下划线(例如:.txt, .jpg, .py)。
    ●扩展名部分是点号后跟字母和数字。

[.][\w]+)$

  1. 匹配时间(24小时制)
    编写一个正则表达式,匹配24小时制的时间格式HH:MM。要求:
    ●时(HH)是00到23之间的数字。
    ●分(MM)是00到59之间的数字。

^(([0-9]|[01][0-9]|2[0-3]):([0-9]|[0-5][0-9]))$

  1. 匹配数字(整数或浮动小数)
    编写一个正则表达式,匹配整数或浮动小数。要求:
    ●可以包含小数点。
    ●可以包含负号。

^(-?[\d]+|-?[\d][.]?[\d]+)$

  1. 匹配包含空格的字符串
    编写一个正则表达式,匹配包含至少一个空格的字符串。
    .[\s]+.
  2. 匹配重复的单词
    编写一个正则表达式,匹配文本中重复出现的单词,忽略大小写。确保匹配两个连续重复的单词。
  3. 提取HTML标签中的文本内容
    编写一个正则表达式,提取HTML标签中的文本内容,忽略标签。例如,提取<p>hello</p>中的hello。
    (?<=<[>]+>).*(?=<[>]+>)
  4. 匹配以特定字符开头和结尾的字符串
    编写一个正则表达式,匹配以字母a开头并以字母z结尾的字符串,中间可以包含任何字符。
    ^a.*z$
  5. 匹配身份证号码
    编写一个正则表达式,匹配中国大陆的身份证号码。要求:
    ●18位数字,其中最后一位可以是字母X。
    ●前17位为数字。
    ^(\d{18})|^(\d{17}[xX])
  6. 替换字符串中的数字为字符
    编写一个正则表达式,将字符串中的所有数字替换为#。
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 #####.
  1. 匹配以特定单词为开头或结尾的字符串
    编写一个正则表达式,匹配以start为开头或以end为结尾的字符串。
    ^start.|.end$
  2. 匹配网址中查询参数
    编写一个正则表达式,提取URL中的查询参数部分。示例URL:http://example.com?name=John&age=30,需要提取name=John和age=30。
    (?<=?).*
  3. 提取字符串中的数字
    编写一个正则表达式,提取字符串中的所有数字。确保能够提取所有的连续数字并且忽略字母和其他符号。
    (?<=.)[\d]+(?=.)
  4. 匹配带有空格和其他符号的字符串
    编写一个正则表达式,匹配包含空格、标点符号和字母数字的字符串。
    [\S]*[\s].+
  5. 匹配合法的HTML标签
    编写一个正则表达式,匹配符合HTML标签规则的字符串。例如:<div>content</div>,要求匹配<div>标签。
    <(?<=<)[\w]*(?=>)>
  6. 提取URL路径中的文件名
    编写一个正则表达式,提取URL路径中的文件名(不包括扩展名)。例如,http://example.com/path/to/file.txt,应提取file。
    (?<=[^/]/)[\w]*(?=.)
上一篇 下一篇

猜你喜欢

热点阅读