您的位置:首页 > 编程语言 > Python开发

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后所有非数字的字符

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的内置函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息