15、正则模块re

一:什么是正则?

 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

生活中处处都是正则:

    比如我们描述:4条腿

      你可能会想到的是四条腿的动物或者桌子,椅子等

    继续描述:4条腿,活的

          就只剩下四条腿的动物这一类了

二:常用匹配模式(元字符)

http://blog.csdn.net/yufenghyc/article/details/51078107

 1 # =================================匹配模式=================================
 2 #一对一的匹配
 3 # ‘hello‘.replace(old,new)
 4 # ‘hello‘.find(‘pattern‘)
 5
 6 #正则匹配
 7 import re
 8 #\w与\W
 9 print(re.findall(‘\w‘,‘hello egon 123‘)) #[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘e‘, ‘g‘, ‘o‘, ‘n‘, ‘1‘, ‘2‘, ‘3‘]
10 print(re.findall(‘\W‘,‘hello egon 123‘)) #[‘ ‘, ‘ ‘]
11
12 #\s与\S
13 print(re.findall(‘\s‘,‘hello  egon  123‘)) #[‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘]
14 print(re.findall(‘\S‘,‘hello  egon  123‘)) #[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘e‘, ‘g‘, ‘o‘, ‘n‘, ‘1‘, ‘2‘, ‘3‘]
15
16 #\d与\D
17 print(re.findall(‘\d‘,‘hello egon 123‘)) #[‘1‘, ‘2‘, ‘3‘]
18 print(re.findall(‘\D‘,‘hello egon 123‘)) #[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘ ‘, ‘e‘, ‘g‘, ‘o‘, ‘n‘, ‘ ‘]
19
20 #\A与\D
21 print(re.findall(‘\Ahe‘,‘hello egon 123‘)) #[‘he‘],\A==>^
22 print(re.findall(‘123\Z‘,‘hello egon 123‘)) #[‘he‘],\Z==>$
23
24 #\n与\t
25 print(re.findall(r‘\n‘,‘hello egon \n123‘)) #[‘\n‘]
26 print(re.findall(r‘\t‘,‘hello egon\t123‘)) #[‘\n‘]
27
28 #^与$
29 print(re.findall(‘^h‘,‘hello egon 123‘)) #[‘h‘]
30 print(re.findall(‘3$‘,‘hello egon 123‘)) #[‘3‘]
31
32 # 重复匹配:| . | * | ? | .* | .*? | + | {n,m} |
33 #.
34 print(re.findall(‘a.b‘,‘a1b‘)) #[‘a1b‘]
35 print(re.findall(‘a.b‘,‘a\nb‘)) #[]
36 print(re.findall(‘a.b‘,‘a\nb‘,re.S)) #[‘a\nb‘]
37 print(re.findall(‘a.b‘,‘a\nb‘,re.DOTALL)) #[‘a\nb‘]同上一条意思一样
38
39 #*
40 print(re.findall(‘ab*‘,‘bbbbbbb‘)) #[]
41 print(re.findall(‘ab*‘,‘a‘)) #[‘a‘]
42 print(re.findall(‘ab*‘,‘abbbb‘)) #[‘abbbb‘]
43
44 #?
45 print(re.findall(‘ab?‘,‘a‘)) #[‘a‘]
46 print(re.findall(‘ab?‘,‘abbb‘)) #[‘ab‘]
47 #匹配所有包含小数在内的数字
48 print(re.findall(‘\d+\.?\d*‘,"asdfasdf123as1.13dfa12adsf1asdf3")) #[‘123‘, ‘1.13‘, ‘12‘, ‘1‘, ‘3‘]
49
50 #.*默认为贪婪匹配
51 print(re.findall(‘a.*b‘,‘a1b22222222b‘)) #[‘a1b22222222b‘]
52
53 #.*?为非贪婪匹配:推荐使用
54 print(re.findall(‘a.*?b‘,‘a1b22222222b‘)) #[‘a1b‘]
55
56 #+
57 print(re.findall(‘ab+‘,‘a‘)) #[]
58 print(re.findall(‘ab+‘,‘abbb‘)) #[‘abbb‘]
59
60 #{n,m}
61 print(re.findall(‘ab{2}‘,‘abbb‘)) #[‘abb‘]
62 print(re.findall(‘ab{2,4}‘,‘abbb‘)) #[‘abb‘]
63 print(re.findall(‘ab{1,}‘,‘abbb‘)) #‘ab{1,}‘ ===> ‘ab+‘
64 print(re.findall(‘ab{0,}‘,‘abbb‘)) #‘ab{0,}‘ ===> ‘ab*‘
65
66 #[]
67 print(re.findall(‘a[1*-]b‘,‘a1b a*b a-b‘)) #[]内的都为普通字符了,且如果-没有被转意的话,应该放到[]的开头或结尾
68 print(re.findall(‘a[^1*-]b‘,‘a1b a*b a-b a=b‘)) #[]内的^代表的意思是取反,所以结果为[‘a=b‘]
69 print(re.findall(‘a[0-9]b‘,‘a1b a*b a-b a=b‘)) #[]内的^代表的意思是取反,所以结果为[‘a=b‘]
70 print(re.findall(‘a[a-z]b‘,‘a1b a*b a-b a=b aeb‘)) #[]内的^代表的意思是取反,所以结果为[‘a=b‘]
71 print(re.findall(‘a[a-zA-Z]b‘,‘a1b a*b a-b a=b aeb aEb‘)) #[]内的^代表的意思是取反,所以结果为[‘a=b‘]
72
73 #\# print(re.findall(‘a\\c‘,‘a\c‘)) #对于正则来说a\\c确实可以匹配到a\c,但是在python解释器读取a\\c时,会发生转义,然后交给re去执行,所以抛出异常
74 print(re.findall(r‘a\\c‘,‘a\c‘)) #r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
75 print(re.findall(‘a\\\\c‘,‘a\c‘)) #同上面的意思一样,和上面的结果一样都是[‘a\\c‘]
76
77 #():分组
78 print(re.findall(‘ab+‘,‘ababab123‘)) #[‘ab‘, ‘ab‘, ‘ab‘]
79 print(re.findall(‘(ab)+123‘,‘ababab123‘)) #[‘ab‘],匹配到末尾的ab123中的ab
80 print(re.findall(‘(?:ab)+123‘,‘ababab123‘)) #findall的结果不是匹配的全部内容,而是组内的内容,?:可以让结果为匹配的全部内容
81
82 #|
83 print(re.findall(‘compan(?:y|ies)‘,‘Too many companies have gone bankrupt, and the next one is my company‘))
时间: 2024-11-08 05:05:48

15、正则模块re的相关文章

python_way day6 反射,正则 模块

python_way day6 反射 正则 模块 一.模块: 1.sys & os: 我们在写项目的时候,经常遇到模块互相调用的情况,但是在不同的模块下我们通过什么去可以找到这些模块的位置哪? 那就是环境变量! 如何查看当前的环境变量?a = sys.pathprint(a)['D:\\资料\\python\\oldboy13\\jobs\\day5\\conf', 'D:\\资料\\python\\python35\\lib\\site-packages\\requests-2.10.0-py

常用模块--- 正则模块 正则表达式 re 模块

# 正则模块# 正则表达式# re模块 #--------------------------------------- time -----------------------------------------# 计算时间差# 做时间格式的转换 # 所有的模块要经历的两个步骤 # 要操作的概念本身 : 正则表达式 时间 # 使用模块去操作它 : re time # 学习 正则表达式 本身 # 什么是正则表达式 # 一种匹配字符串的规则 # input 一串数据 : # 是不是qq号码 : 全

Python3中正则模块re.compile、re.match及re.search

本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.search re 模块官方说明文档 正则匹配的时候,第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义. 比如表示 '\n',可以写 r'\n',或者不适用原生字符 '\n'. 推荐使用 re.match re.compile() 函数 编译正则表达式模式,

Python3中正则模块re.compile、re.match及re.search函数用法详解

Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义. 比如表示 ‘\n',可以写 r'\n',或者不适用原生字符 ‘\n'. 推荐使用 re.match re.compile() 函数 编译正则表达式模式,返回一个对象.可以把常用的正则表达式编译成正则表达式对象,方便后续调用及

python 正则模块的使用(re)说明

python 正则模块的使用(re)说明 正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用'\\\\'来做为正则表达式的字符串,因为正则表达式要是\\,而字符串里,每个反斜杆都要写成\\. 你也可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义,比如r'\n'这个字

python学习day19正则模块

正则模块:正则所有程序员都要用到正则爬虫方向要求对正则表达式掌握牢固正则表达式:是一种客观存在的规则re模块,是python提供的操作正则表达式的工具正则表达式在所有语言中都是通用的中括号在正咋中是字符集,只能正序,由小到大.(点)是匹配除了换行以外所有字符\w小写w匹配字母或数字或下划线\s匹配任意的空白符\n匹配一个换行符\d匹配所有数字\t匹配一个制表符\b匹配一个单词的结尾\^匹配字符串的开始   在字符集里面就是\$匹配字符串结尾\W大写的w  匹配非字母或数字或下划线\ID匹配非数字

正则模块

正则模块:re import re print(re.findall('\w','egon 123 + _ - *')) #\w匹配字母数据及下划线 print(re.findall('\W','egon 123 + _ - *')) #\W匹配非字母数据及下划线 print(re.findall('\s','egon\t 12\n3 + _ - *')) #\s匹配任意空白字符,等价于[\f\n\r\t] print(re.findall('\S','egon 123 + _ - *')) #

python:正则模块

1,正则表达式 正则表达式是用来做字符串的匹配的,正则有他自己的规则,和python没有关系,一种匹配字符串的规则. 2,字符组 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示. 字符分为很多类,比如数字.字母.标点等等. 假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0.1.2...9这10个数之一.3,检索输入的手机号是否合法 #检测输入的手机号是否合法 while True: phone_number = input('pleas

re模块-正则模块

讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示.假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误.这个功能是怎么实现的呢?假如现在你用python写一段代码,类似: phone_number = input('please input your phone number : ') 你怎么判断这