正则表达式:
+:符号表示在符号之前的字段必须最少出现一次
# coding=utf-8
import re
a='_python 1111pythonn\n7\pytho8php'
r=re.findall('python+',a)
print(r)
* :表示符号前的字段可以出现为0 次或者多次
# coding=utf-8
import re
a='_python 1111pythonn\n7\pytho8php'
r=re.findall('python*',a)
print(r)
?:表示符号前的字段可以为0次最多出现一次
# coding=utf-8
import re
a='_python 1111pythonn\n7\pythopythonnpythonn8php'
r=re.findall('python?',a)
print(r)
元字符
\d表示数字 与[0-9]同效
\D表示非数字与[^0-9]同效
\w 表示数据和字母 同效 [A-Za-z0-9_] 单词字符
\W 表示非单词字符 即 空格 \r \t \n 等都是非单词字符
\s 表示空白字符 即 空格 \r \t \n 等
\S 表示非空白字符 即非 空格 \r \t \n 等
.匹配除\n换行符之外的其他所有字符
# coding=utf-8
# re.I忽略字母大小写
#re.S 让.匹配换行符
import re
a='PythonC#\nJav\naPHP'
r=re.findall('c#.{1}',a,re.I | re.S)
print(r)
[] 表示或的意思
() 表示且关系
# coding=utf-8
#多个单词重复出现
import re
a='pythonpythonpythonpythonpythonthonpythonthonpythonthonpython'
r=re.findall('(python){3}',a)
print(r)
^表示相反的意思 同时表示从开始匹配
$表示字符串得末尾
{} 数量词
# coding=utf-8
import re
a='_python 1111java&6\n7\t\r 8p_hp'
r=re.findall('[a-z]{3}',a)
print(r)
贪婪
# coding=utf-8
import re
a='_python 1111java&6\n7\t\r 8php'
r=re.findall('[0-9]{3,6}',a)
print(r)
非贪婪
# coding=utf-8
import re
a='_python 1111java&6\n7\t\r 8php'
r=re.findall('[0-9]{3,6}?',a)
print(r)
边界匹配
# coding=utf-8
#边界匹配
import re
a='1000016666'
r=re.findall('^\d{4,8}$',a)
print(r)
#重点
# coding=utf-8
import re
a='PythonC#JavaC#PHP'
#r=re.sub('C#','GO',a,1)
#r= a.replace('C#','Go')
def convert(value):
matched = value.group()
return '!!'+ matched + '!!'
r = re.sub('C#',convert,a)
print(r)