正则表达式符号与方法一常用符号
字符 | 含义 |
---|---|
. | 匹配任意字符 |
* | 匹配一个字符无限次或零次 |
? | 匹配一个字符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 表示替换所有的匹配。