python正则

python数据挖掘第一篇:正则表达式

眉间皱痕 提交于 2019-12-12 19:33:47
正则表达式 re 模块 re.match(pattern,string[,flag]) match方法 从首字母开始匹配,如果包含pattern字符串,则匹配成功,返回match对象,失败则返回None. 【注】只从起始位置开始匹配 ,flag表示可选项 re.I 使匹配对大小写不敏感 re.L 做本地化识别(locale-aware)匹配 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配 运行结果:(0,3) re.search(pattern,string[,flag]) search方法不一定从起始位置开始匹配 【注】如果存在多个匹配对象,只返回第一个 re.findall(pattern,string[,flag]) 返回所有匹配到的pattern,返回形式为数组 re.sub(pattern,repl,string) #做替换,删除 pattern = re.compile(pattern_str) # 返回一个正则表达式对象 res = pattern

python中的正则匹配

守給你的承諾、 提交于 2019-12-09 21:27:53
对于一个文本的字符串多行处理,如果使用split()函数,需要逐行处理,处理的代码也会比较复杂而且阅读体验感不是很好。re模块提供了的匹配函数,但是需要正则化相关的知识。 对于正则表达式样式使用 Python 的原始字符串表示法;在带有 'r' 前缀的字符串字面值中,反斜杠不必做任何特殊处理。 因此 r"\n" 表示包含 '' 和 'n' 两个字符的字符串,而 "\n" 则表示只包含一个换行符的字符串。 样式在 Python 代码中通常都会使用这种原始字符串表示法来表示。 特殊字符 '.'在默认模式,匹配除了换行的任意字符。 '^'匹配字符串的开头, 多行模式匹配换行后的首个符号。 '$'匹配字符串尾或者换行符的前一个字符,多行模式匹配换行符的前一个字符。 ' '对它前面的正则式匹配0到任意次重复, 尽量多的匹配字符串。 ab 会匹配 'a', 'ab'。 '+'对它前面的正则式匹配1到任意次重复。 ab+ 会匹配 'a' 后面跟随1个以上到任意个 'b',它不会匹配 'a'。 '?'对它前面的正则式匹配0到1次重复。 ab? 会匹配 'a' 或者 'ab'。 “{m}”对其之前的正则式指定匹配 m 个重复;少于 m 的话就会导致匹配失败。比如, a{6} 将匹配6个 'a' , 但是不能是5个 {m,n}?前一个修饰符的非贪婪模式,只匹配尽量少的字符次数。比如,对于

【案例】Python - 用正则判断邮箱是否合法

戏子无情 提交于 2019-12-06 17:06:27
1>用正则判断QQ邮箱是否合法      这里QQ邮箱指QQ号+@qq.com结尾     分析:1.QQ最短5位最长11位数        2.以@qq.com结尾        3.不能以0开头   直接上代码 import re def is_valid_email(email): c = '邮箱格式合法:' d = '邮箱格式不合法:' ex_email = re.compile(r'^[1-9][0-9]{4,10}@qq\.com') result = ex_email.match(email) # print(result) if result: return c + email else: return d + email qqemail = '1348767137@qq.com' print(is_valid_email(qqemail)) qqemail = '1348@qq.com' print(is_valid_email(qqemail)) qqemail = '134876713777@qq.com' print(is_valid_email(qqemail))   输出结果: 来源: https://www.cnblogs.com/cxstudypython/p/11996395.html

python-正则

混江龙づ霸主 提交于 2019-12-06 14:14:46
python之正则表达式: #!/usr/bin/python3 # coding:utf-8 # Auther:AlphaPanda # Description:正则表达式 # Version:q # Date:Mon Dec 2 11:17:58 EST 2019 # 导入相关模块 import re """ 语法:把字符串按照正则表达式进行匹配,把匹配到的结果返回到列表中 lst = re.findall(正则表达式,字符串) """ # 1) 预定义字符集 # \d 匹配数字 res = re.findall("\d","adsf123asdfa") print(res,type(res)) # \D 匹配非数字 print(re.findall("\D","asdfa#@$123sdf")) # \w 匹配字母数字下划线 print(re.findall("\w","asdfas123%^&_sdf")) # \W 匹配非字母非字母和非下划线的其他字符 print(re.findall("\W","asdfas123%^&_sdf")) # \s 匹配任意的空白符(空白符包括\n换行符,\t指标符,\r回车符??) print(re.findall("\s","""abcd adf like you""")) # \S 匹配任意的非空白符 print(re.findall

Python爬虫系列:五、正则表达式

冷暖自知 提交于 2019-12-06 13:48:36
1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。 正则表达式的大致匹配过程是: 1.依次拿出表达式和文本中的字符比较, 2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 3.如果表达式中有量词或边界,这个过程会稍微有一些不同。 2.正则表达式的语法规则   请自行百度,有更详细的讲解。 3.Python Re模块 Python 自带了re模块,它提供了对正则表达式的支持。主要用到的方法列举如下 来源: https://www.cnblogs.com/biao/p/11987094.html

re正则表达式模块

天涯浪子 提交于 2019-12-06 08:39:18
一、re模块的基本使用 Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符; 假如你需要匹配文本中的字符 \, Python里的使用原生字符串表示: r'\\' 表示。同样,匹配一个数字的 \\d 可以写成 r'\d' 。 正则表达式是用来匹配处理字符串的 python 中使用正则表达式需要引入re模块 import re # 第一步,要引入re模块 a = re.findall("匹配规则", "这个字符串是否有匹配规则的字符") # 第二步,调用模块函数 print(a) # 以列表形式返回匹配到的字符串 # ['匹配规则'] ^元字符:匹配字符串开头。 ^元字符如果写到[]字符集里就是反取 [^a-z]反取: 匹配出除字母外的字符,^元字符如果写到字符集里就是反取 $元字符:匹配字符串末尾 在多行模式中匹配每一行的末尾 *元字符:匹配前一个字符0或多次 需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0个或多个原本字符 贪婪匹配前导字符有多少个就匹配多少个很贪婪 如果规则里只有一个分组,尽量避免用*否则会有可能匹配出空字符串 +元字符:匹配前一个字符1次或无限次 需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符 贪婪匹配前导字符有多少个就匹配多少个很贪婪 ?元字符(防止贪婪匹配)

python正则图片爬取

二次信任 提交于 2019-12-05 08:39:58
# conding:utf8 import requests import re import time if __name__ == "__main__": # 所有的数据 url = 'http://www.win4000.com/zt/qsmy.html' response = requests.get(url) # with open('./qsmy.html', mode='w', encoding='utf-8') as fp: # fp.write(response.text) # print('网页中的内容保存成功') # 我们想要的数据 # <img src="http://static.win4000.com/home/images/placeholder.jpg" data-original = "http://pic1.win4000.com/wallpaper/5/53bcec5b3235b_270_185.jpg" /> pattern = r'<img src=".*?" data-original = "(.*?)" />' html = response.text imahe_urls = re.findall(pattern, html) print(imahe_urls) for img_url in imahe_urls: print(img

Shell正则应用

岁酱吖の 提交于 2019-12-04 21:12:17
正则表达式 regular expression, RE 是一种字符模式,用于在查找过程中匹配指定的字符。在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念 正则表达式的作用 Linux正则表达式经常在 grep,sed,awk 等中出现,要想学好这些命令首先就要掌握正则表达式 大量的字符串文件需要进行配置,而且是非交互式的 过滤相关的字符串,匹配字符串,打印字符串 正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。 基础正则表达式 正则表达式 \ 转义符,将特殊字符进行转义,忽略其特殊意义 ^ 匹配行首,awk中,^则是匹配字符串的开始 $ 匹配行尾,awk中,$则是匹配字符串的结尾 ^$ 表示空行 . 匹配除换行符\n之外的任意单个字符 [ ] 匹配包含在[字符]之中的任意一个字符 [^ ] 匹配[^字符]之外的任意一个字符 [ - ] 匹配[]中指定范围内的任意一个字符 ? 匹配之前的项1次或者0次 + 匹配之前的项1次或者多次 * 匹配之前的项0次或者多次 () 匹配表达式,创建一个用于匹配的子串 { n } 匹配之前的项n次,n是可以为0的正整数 {n,} 之前的项至少需要匹配n次 {n,m}

re模块

為{幸葍}努か 提交于 2019-12-04 08:07:34
re模块 一、正则表达式 正则表达式本身是一种小型的、高度专业化的编程语言,它并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.1 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab

Python连载49-正则举例

牧云@^-^@ 提交于 2019-12-04 02:33:00
一、re举例 import re #查找数字 p = re.compile(r"\d+") #在字符串“ongahjeuf125”中及逆行查找,按照规则p指定的正则进行查找 m = p.match("ong125fdsgdsf48515",3,20)#后面的参数序号3到6的搜索范围 print(m) #上述代码说明 #1.match可以输入参数表示起始位置 #2.查找到的结果只包含一个,表示第一次进行匹配成功的内容 print(m[0])#直接打印出了匹配的内容 print(m.start(0))#打印匹配内容从哪里开始的 print(m.end(0))#打印匹配内容从哪里结束的 2.再举个例子:可以分组获取内容 #参数中re.I代表忽略大小写 p1 = re.compile(r"([a-z]+) ([a-z]+)",re.I) m1 = p1.match("I am relly good man") print(m1) print(m1.group(0)) print(m1.start(0)) print(m1.end(0)) print("===================") print(m1.group(1)) print(m1.start(1)) print(m1.end(1)) print("===================") print(m1.group