Python正则表达式超基础版
2016-12-19 18:00
246 查看
python的三种导入方式
import ModName #"只要导入了,就可以使用该模块的公共的函数、属性、类,使用方式为 ModName.function " #"eg:" import re from modName import fuctionName #"* 表示,该模块的所有公共对象(public objects)都被导入到 当前的名称空间,也就是任何只要不是以”_”开始的东西都会被导入。 所以引用时不需要加入ModName,直接以function形式就可以" #"eg:" from re import findall,search,S from re import * 内建函数__import__() #"以上两种方式都可以导入模块,但是实际上import是使用builtin函数__import__来工作的,__import__()的参数是一个字符串" module = __import__(module_name)
如果某个模块的方法或者函数容易引起歧义,建议使用import ModName方式,比如使用re.S 时,如果单独使用S,很容易引起歧义。不确定这个S是个函数,还是个变量。
python 正则表达式
使用\d+匹配纯数字
from re import findall,search,sub,S a = 'asdfasf12345an8888fas' b = findall('(\d+)', a) print b
结果:[‘12345’, ‘8888’]
.符号
.符号含义:匹配任意字符\n除外,可以理解为占位符a = "3\n" b = "3g" d = re.findall('3.', a) e = re.findall('3.', b) print d, e
结果:[ ] [‘3g’]
.没有办法匹配换行符,所以返回为空,正则表达式re.S的作用就是为了让.符号可以匹配换行符
import re a = "3\n" f = re.findall('3.',a, re.S)
结果:[‘3\n’]
*符号
*符号含义:匹配前一个字符0次或者无限次a = 'xz123' b = re.findall('x*', a) print b
结果: [‘x’, ”, ”, ”, ”, ”]
*在’xz123’中匹配’x*’中*前一个字符,也就是x,第一个x匹配成功,返回x,之后都没有匹配到x则返回为空。
? 符号
?符号:匹配前一个字符0次或者1次a = '489' b = '44' c = re.findall('4?', a) d = re.findall('4?', b) print c, d
结果:[‘4’, ”, ”, ”] [‘4’, ‘4’, ”]
.*组合
.*符号: 贪心算法,匹配尽量多secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse' b = re.findall('xx.*xx', secret_code) print b
结果 [‘xxIxxfasdjifja134xxlovexx23345sdfxxyouxx’]
.*? 组合
.*? 组合:非贪心算法secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse' c = re.findall('xx.*?xx', secret_code) print c
结果:[‘xxIxx’, ‘xxlovexx’, ‘xxyouxx’]
(.*?)组合
(.*?)组合:括号内的数据作为结果返回s2 = 'asdfxxIxx123xxlovexxdfd' d = re.findall('xx(.*?)xx123xx(.*?)xx',s2) print d
结果:[(‘I’, ‘love’)]
%d符号
%d符号:替换文本s2 = 'asdfxxIxx123xxlovexxdfd' e = re.sub('xx(.*?)xx', 'xx%dxx' %789, s2) print e
结果:asdfxx789xx123xx789xxdfd
%d替换 (.*?) 中匹配出来的字符,并将789作为替换字符
r’正则表达式’
python正则表达式中有时会出现r’src=”(.+?)”’ 这样的形式,后面的匹配我们已经知道了,但是前面的 r 是什么鬼, r是取消正则中的反义。反义
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:反义字符 | 含义 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
a = 'abc88hfliaehiflsda2' d = re.findall('a\D', a) print d
结果:[‘ab’, ‘ae’]
匹配a后除了b以外的字符
a = 'abc88hfliaehiflsda2' f = re.findall('a[^b]', a) print f
结果:[‘ae’, ‘a2’]
正则表达式re模块学习请看
正则表达式模块学习
python引入模块参考
python有三种导入方式
python的import内置函数参考
python的内置函数
相关文章推荐
- Python正则表达式的用法(2. 替换;3.拆分)
- 转载:Python正则表达式的用法(1. 匹配)
- 比较详细Python正则表达式操作指南(re使用)
- python 正则表达式 概述及常用字符
- Python 正则表达式操作指南
- python正则表达式操作指南[转载]
- 在python 中使用正则表达式
- python正则表达式分析新浪网天气预报,通过pyfetion发送短信的代码
- 比较详细Python正则表达式操作指南(re使用)
- Python正则表达式(二)
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
- 正则表达式在python中的应用
- Python用re(正则表达式)模块过滤Telnet字体颜色
- Python正则表达式的几种匹配用法
- c++正则表达式,python
- python中正则表达式与re 模块
- python中的一些正则表达式的含义
- Python正则表达式(一)
- Python正则表达式(三)
- Python正则表达式操作指南