python 正则表达式“.*”和“.*? ”的区别

".*"和".*? "的区别

点号表示任意非换行符的字符,星号表示匹配它前面的字符0次或者任意多次。所以".*"表示匹配一串任意长度的字符串任意次。这个时候必须在".*"的前后加其他的符号来限定范围,否则得到的结果就是原来的整个字符串。

".*? ,问号表示匹配它前面的符号0次或者1次。*?的意思就是匹配一个能满足要求的最短字符串。

python 复制代码
# 正则表达式
# 正则表达式可以提取一大段文本的关键信息。
"""
正则表达式是一段字符串,可以表示一段有规律的信息。

1.正则表达式的基本符号
点号 '.' 一个点号可以代替除了换行符以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号
星号 '*' 一个星号可以表示它前面的一个子表达式(普通字符、另一个或几个正则表达式符号)0次到无限次。
问号 '?' 问号表示它前面的子表达式0次或者1次
反斜杠 '\'  搭配其他符号,将普通符号变成特殊符号
数字 \d 来表示
小括号  可以把括号里面的内容提取出来

"""

"""
findall 返回所有满足要求的字符串
re.findall(pattern,string,flags=0)
pattern 表示正则表达式,string表示原来的字符串,flags表示一些特殊功能的标志

"""
import re
content='我的微博密码是:1234567, QQ密码是:33445566, 银行卡密码是:888888, Github密码是:999abc999,'

h=re.findall('密码是:(.*?),',content)  # .*?表示符合要求的最短字符串
hh=re.findall('密码是:(.*)',content)

print('密码是:',h)  #带问号,表示符合要求的最短字符串
print('密码是:',hh)

①".*"​:贪婪模式,获取最长的满足条件的字符串。

②".*? "​:非贪婪模式,获取最短的能满足条件的字符串。

python 复制代码
import re

h="""
我是kingname,我的微博密码是:123
456,
"""

hh=re.findall('密码是:(.*?),',h)
hhh=re.findall('密码是:(.*?),',h,re.S)  #re.S表示忽略换行符


print(hh)
print(hhh)
相关推荐
神仙别闹几秒前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE1 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
zwjapple18 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five19 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
前端每日三省21 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
好看资源平台31 分钟前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
凡人的AI工具箱34 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
chnming19871 小时前
STL关联式容器之map
开发语言·c++
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂1 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python