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)
相关推荐
周bro15 分钟前
vue3使用panolens.js实现全景,带有上一个下一个,全屏功能
开发语言·javascript·ecmascript
qq_4350707821 分钟前
python乱炖5——id()函数
python
卓越小Y21 分钟前
用centos安装远程迅雷失败,重写程序做一台下载服务器
linux·python·flask·centos
白总Server1 小时前
rust解说
linux·开发语言·后端·golang·rust·debian·php
金庆1 小时前
Rust Pin
开发语言·后端·rust
Lill_bin1 小时前
CAS机制:并发编程中的原子操作
java·服务器·开发语言·windows·算法·微服务
wh233z1 小时前
Codeforces Round 969 (Div. 2) (A~D)
c语言·开发语言·数据结构·c++·算法·图论
曼亿点2 小时前
python的流程控制语句之制作空气质量评估系统
android·开发语言·python
强哥带你学BP神经网络2 小时前
基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现
人工智能·python·深度学习·神经网络·机器学习
weixin_586062022 小时前
PHP 环境搭建教程
开发语言·php