设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 9207|回复: 0
打印 上一主题 下一主题

正则表达式疑问

[复制链接]

2

主题

0

好友

60

积分

注册会员

Rank: 2

楼主
发表于 2019-3-13 13:11:26 |显示全部楼层
本帖最后由 stormsha 于 2019-3-13 13:13 编辑

import re

# 1
"""
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
.+  加上 + 匹配一个或多个,贪婪匹配
.*  加上 * 匹配零个或多个,贪婪匹配

.+?  .*?  加上 ? 非贪婪匹配
"""
print(1, '---------------------------------------')
# 实战检测一下更好理解
text = 'Let us go go go !'
m1 = re.findall('us (.+) !', text)
m2 = re.findall('(go.+) ', text)
m3 = re.findall('(go.*) ', text)
print(m1)
print(m2)
print(m3)

# 2
"""
# \d    匹配任意数字,等价于 [0-9].
\d+     
\d+?    这里 + 、?、+? 和上边意义是一样的,只不过匹配的目标是 \d (数字)
"""

# 实战检测一下更好理解
print(2, '---------------------------------------')
text = 'Let us 3 4  5 52 go go go !'
m1 = re.findall('(\d+?)', text)
m2 = re.findall('(\d+)', text)
m3 = re.findall('(5\d*?)', text)
print(m1)
print(m2)
print(m3)


# 3
"""
\s 匹配任意空白字符,等价于 [\t\n\r\f].

\s*
\s*?

从上边可以发现,  *、*?和上边意义也一样,只是这里\s匹配空字符

"""
print(3, '---------------------------------------')
text = 'Let us go go go !'
m1 = re.findall(r'go\s+', text)
m2 = re.findall(r'go\s+?', text)
m3 = re.findall(r'go\s*?', text)

m4 = re.findall(r'(go\s*)', text)
m5 = re.findall(r'(go\s*)+', text)

m6 = re.findall(r'(go\s*?)', text)
m7 = re.findall(r'(go\s*?)+', text)

m8 = re.findall(r'(go go go\s*)', text)

print(m1)
print(m2)
print(m3)
print(m4)
print(m5)
print(m6)
print(m7)
print(m8)

"""
看到了这个问题,自己写了一下加深一下对 .  \d  \s  的理解
"""
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-6 00:02 , Processed in 0.015140 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部