欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

常用正则表达式_pynoteslog_2

程序员文章站 2022-07-13 13:18:01
...
import re
s = 'as123'
a = re.findall(r'.+', s)
b = re.findall(r'.*', s)
print(a)
print(b)

-------注:规则前加了“r”,表示原生字符串,否则,需要用反斜线转义(比如匹配路径的时候),
如果是单纯的匹配普通字符串,不加“r”也罢。

输出:[‘as123’] [‘as123’, ‘’]
第二个怎么多了个空字符串呢?

s1 = 'a12sba34sca2s'
a = re.findall(r'a.*s', s1)
print(a)

贪心法
输出: [‘a12sba34sca2s’]
也就是,匹配出最大的符合规则的字符串,而不是匹配到符合的就输出一次。(如果匹配网址的话,需要用最小匹配而不是最大匹配,,,)

s1 = 'a12sba34sca2s'
a = re.findall(r'a.*?s', s1)
print(a)

非贪心法
输出:[‘a12s’, ‘a34s’, ‘a2s’]
此时,可以将符合规则的最小匹配输出成列表(完美)。

s3 = 'a12sba34sca2s'
a = re.findall('a(.*?)s', s3)
print(a)
# ['12', '34', '2']

使用 (.*?)
输出: [‘12’, ‘34’, ‘2’]
也就是,匹配出规则所示夹着的部分。(什么时候用啊···)

s4 = 'a12sba34sca2s'
a = re.search('a(.*?)s([a-z]*)', s4).group()
print(a)

输出 : a12sba 是个字符串 str
search与findall的区别在于,前者匹配到第一个符合项后 就停止了, 后者会遍历整个字符串;
规则里有两个括号,group()和group(0)都是表示输出匹配的全部,group(2)表示第二个括号的内容。

相关标签: 正则