正则表达式(1)

正则表达式符号与方法一常用符号
字符 含义
. 匹配任意字符
* 匹配一个字符无限次或零次
? 匹配一个字符0次或一次
.* 贪心算法
.*? 非贪心算法
() 括号内的结果作为反回值
常用方法

在这里插入图片描述
几种符号的demo

demo1:
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('..x..', code)
print(r)
>>>['akxxI', 'jkxxl', 'vexxs', 'bsxxy', 'ouxxh'] 

demo2:
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('x*', code)
print(r)
>>>['', '', '', '', '', '', '', 'xx', '', 'xx', '', '', '', '', 'xx', '', '', '', '', 'xx', '', '', '', 'xx', '', '', '', 'xx', '', '', '', '', '']

demo3:
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('x?', code)
print(r)
>>>['', '', '', '', '', '', '', 'x', 'x', '', 'x', 'x', '', '', '', '', 'x', 'x', '', '', '', '', 'x', 'x', '', '', '', 'x', 'x', '', '', '', 'x', 'x', '', '', '', '', '']

demo4:贪心算法
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('xx.*xx', code)
print(r)
>>>['xxIxxbcjkxxlovexxsbsxxyouxx']

demo5:非贪心算法
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('xx.*?xx', code)
print(r)
>>>['xxIxx', 'xxlovexx', 'xxyouxx']

demo6:括号提取
code = 'huasdakxxIxxbcjkxxlovexxsbsxxyouxxhjhh'
r = re.findall('xx(.*?)xx', code)
print(r)
>>>['I', 'love', 'you']

re.S使.可以匹配任意字符,包括换行符

demo1:
code = '''sdfxxhello
xxfSdfxxworldxxasdf
'''
r = re.findall('xx(.*?)xx', code)
print(r)
>>>['fSdf']

demo2:
code = '''sdfxxhello
xxfSdfxxworldxxasdf
'''
r = re.findall('xx(.*?)xx', code, re.S)
print(r)
>>>['hello
', 'world']
d+ 匹配纯数字
code = 'sdcs1234cbs5678dk'
r= re.findall('d+', code)
print(r)
>>>['1234', '5678']

sub

语法:
re.sub(pattern, repl, string, count=0, flags=0)

pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

原文地址:https://www.cnblogs.com/l0nmar/p/12553860.html