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)
相关推荐
青岑CTF34 分钟前
攻防世界-Ics-05-胎教版wp
开发语言·安全·web安全·网络安全·php
Li emily36 分钟前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
m0_5613596743 分钟前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Ulyanov1 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
APIshop1 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
血小板要健康1 小时前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
淼淼7632 小时前
安装jdk1.8
java·开发语言
2401_838472512 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
PfCoder2 小时前
WinForm真入门(23)---PictureBox 控件详细用法
开发语言·windows·c#·winform
Legendary_0082 小时前
Type-C 一拖二快充线:突破单口限制的技术逻辑
c语言·开发语言