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语言中关于类型转换不匹配的解决方案
c语言·开发语言·算法
RedJACK~13 分钟前
Go Ebiten小游戏开发:扫雷
开发语言·后端·golang
程序猿_极客27 分钟前
【2025】16届蓝桥杯 Java 组全题详解(省赛真题 + 思路 + 代码)
java·开发语言·职场和发展·蓝桥杯
工业互联网专业1 小时前
基于协同过滤算法的小说推荐系统_django+spider
python·django·毕业设计·源码·课程设计·spider·协同过滤算法
星星的月亮叫太阳1 小时前
large-scale-DRL-exploration 代码阅读 总结
python·算法
玉树临风江流儿1 小时前
C++左值、右值、move移动函数
开发语言·c++
Q_Q19632884751 小时前
python+django/flask基于Echarts+Python的图书零售监测系统设计与实现(带大屏)
spring boot·python·django·flask·node.js·php
拾荒的小海螺1 小时前
JAVA:Spring Boot3 新特性解析的技术指南
java·开发语言·spring boot
深度学习lover2 小时前
<数据集>yolo航拍交通目标识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍交通目标识别
程序猿20232 小时前
Python每日一练---第二天:合并两个有序数组
开发语言·python