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)
相关推荐
Cachel wood2 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Code哈哈笑5 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
終不似少年遊*8 分钟前
pyecharts
python·信息可视化·数据分析·学习笔记·pyecharts·使用技巧
程序猿进阶9 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
Python之栈9 分钟前
【无标题】
数据库·python·mysql
qq_4336184411 分钟前
shell 编程(二)
开发语言·bash·shell
charlie11451419125 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满25 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He99932 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_7482361139 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust