常用正则表达式_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)表示第二个括号的内容。
下一篇: 正则吧表达式的正确使用方式