全网最通俗易懂的正则表达式讲解,以例子来讲解

正则表达式:

正则表达式在线测试工具:https://regex101.com/

百度百科解释正则表达式为正则表达式是对字符串操作的一种逻辑公式

我们可以将正则表达式理解为一种规则,自己设定的一种规则,让计算机根据这个规则来找到你需要的字符串。但是这个规则你怎么制定,当然不能瞎制定,对电脑说:”你给我找到这篇文章的所有包含刘德华的句子(字符串)!“,电脑当然不懂,所以我们下面交代一些符号,让你正确的建立正则表达式,建立规则,让电脑能帮你找到你想要的字符。

文末有正则表达式的最常见应用。

基本用法

  1. ?: 表示?前面的字符需要出现0次或一次。简单来说就是?前面的字符可有可无。比如你输入一个正则表达式tea?,那么计算机就会找到te,tel这样的字符串。
  2. *:表示*前面的字符需要出现0个或多次。比如你输入一个正则表达式ab*c,那么计算机就会找到ac,abc,abbbbbc这样的字符串。
  3. +:表示+前面的字符需要出现1次以上。比如你输入一个正则表达式ab+c,那么计算机就会找到abc,abbbbc这样的字符串。
  4. {}:精确匹配:想匹配几次就匹配几次。比如你输入一个正则表达式ab{6}c,那么计算机就会找到abbbbbbc这样的字符串。你输入一个正则表达式ab{2,6}c,那么计算机就会找到abbc,abbbc,abbbbc,abbbbbc,abbbbbbc这样的字符串。ab{2,}c的话就是b出现两次以上。

以上单个限定符规则就讲完了,如果是想让字符串出现一定次数的话,用()括起来就好了。比如(ab)+c,文章中ababababc等满足规则的字符串就会被找到。

中级用法

或运算符:|,如a (baby|mom),文章就会找到a baby或a mom。

字符类:[],可以匹配由框内字符构成的字符串。比如制定正则表达式[alo]+,那么afsgsglo就可以被找到(匹配到),因为afsgsglo中包含alo。相对于()的区别就是它不讲顺序,只要存在即可。常用例子:[a-zA-Z0-9]+。

非运算符:^,一般放在表达式前面,表示除了他们以外的字符都可被匹配。比如你天生不能见到大写字母,见到了就想吐,你就可以输入正则表达式[ ^A-Z]+。

元字符:

编号示例说明
1.匹配除换行符以外的任何字符
2\d匹配数字:[0-9]
3\D匹配非数字:[^0-9]
4\s匹配空格字符:[\t\r\n\f]
5\S匹配非空格:[^\t\r\n\f]
6\w匹配单字字符: [A-Za-z0-9_]
7\W匹配非单字字符: [ ^A-Za-z0-9_]

匹配行首,如a^,只能找到行首出现a的字符串。如afff。

匹配行尾,如a$,只能找到行尾出现a的字符串。如llla。

高级用法:

贪婪匹配与懒惰匹配:

贪婪匹配就是匹配尽可能多。懒惰匹配就是匹配尽可能少。

如你想在

<div><span>hello world</span></div>

里匹配出标签div和span。

我们不自觉地就想用<.+>,<>里面只要有东西就匹配。

但是最后的结果是:

共找到 1 处匹配:
<div><span>hello world</span></div>

我们将贪婪匹配转为懒惰匹配,将正则表达式改为<.+?>,则最后结果为:

共找到 4 处匹配:
<div>
<span>
</span>
</div>

便完成了。

常见应用

正则表达式判断密码python代码:

import re

lower = re.compile('[a-z]')
upper = re.compile('[A-Z]')
digit = re.compile('[0-9]')
wrong = re.compile('[^a-zA-Z0-9]')

while True:
    password = input('请输入大于8位的包含大小写字母和数字的密码:')
    if len(password) < 8:
        print('输入的密码小于8位')
    elif wrong.search(password) != None:
        print('包含无效字符')
    else:
        if lower.search(password) == None:
            print('未包含小写字母')
        elif upper.search(password) == None:
            print('未包含大写字母')
        elif digit.search(password) == None:
            print('未包含数字')
        else:
            print('输入成功')
            break
  • 22
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
假设你是一家餐厅的服务员,而你的餐厅有一个在线订餐系统。下面是一个使用RESTful API的例子: 1. 菜单列表 API 当客人打开在线订餐系统时,他们需要看到菜单列表。这个API可能会返回一个JSON对象,其中包含所有菜单项及其价格。 例如,当客人访问“/menu”时,他们会收到以下响应: { "items": [ { "name": "汉堡", "price": 10.99 }, { "name": "薯条", "price": 4.99 }, { "name": "饮料", "price": 2.99 } ] } 2. 添加订单 API 当客人决定要点餐时,他们可以使用在线系统添加订单。此API可能会接受一个包含客人信息和订单细节的JSON对象。 例如,当客人向“/orders”发送POST请求时,他们可以提交以下数据: { "name": "张三", "email": "zhangsan@example.com", "items": [ { "name": "汉堡", "quantity": 2 }, { "name": "饮料", "quantity": 1 } ] } 3. 订单状态 API 客人可以使用在线系统检查他们的订单状态。此API可能会返回一个JSON对象,其中包含订单状态。 例如,当客人向“/orders/1234”发送GET请求时,他们可能会收到以下响应: { "status": "已接受", "items": [ { "name": "汉堡", "quantity": 2 }, { "name": "饮料", "quantity": 1 } ] } 这些API都是RESTful的,因为它们使用HTTP协议的标准方法(GET,POST,PUT和DELETE)来获、创建、更新和删除资源。此外,它们还使用JSON格式来传输数据,这是一种通用的格式,易于理解和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值