本文目录
python正则表达式管道符的使用
有几个问题1、你要测试是否匹配多个,应该用findall,而不是search,search只找第一个匹配的。2、\d{8} 你写成了d{8}3、{6}是精确6位,{6,}才会匹配到8位的12345678
如何用python正则
(1)re.match()函数
re.match 尝试从字符串的开始匹配一个模式。
函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
参数
描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配成功re.match方法返回一个匹配的对象,否则返回None。
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法
描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
(2)re.research()函数
re.search匹配整个字符串,直到找到一个匹配。
函数语法:
re.search(pattern, string, flags=0)
函数参数说明:
参数
描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配成功re.search方法方法返回一个匹配的对象,否则返回None。
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法
描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
(3)实例
我这里采用re.search()函数解决的问题。
测试数据集为购物网站用户评论
实例代码:
view plain copy
# -*-coding:utf-8 -*-
import sys
import re
reload(sys)
text = open(’JD_DFB_comments.txt’)
line = text.readline()
#i = 0
while line:
#i = i+1
#re.search匹配整个字符串,直到找到一个匹配。
n1 = re.search(r’(要(是|能)(.*)就(更|好|再|直观|完美|太)(.*)了)’,line)
n2 = re.search(r’(如果)(.*)就(更|好|再|直观|完美|太)(.*)了’,line)
#打开将要写入的数据
data = open(’aa.txt’,’a’)
if n1:
#print line
data.write(line) #写入匹配到的数据
#print i 记录匹配结果所在的行数
#print n1.group() #等于print line
print n1.group(3) #打出第三个括号里的内容
if n2:
#print n2.group()
print n2.group(2)
line = text.readline()
text.close()
阅读更多
个人分类: Python语言
想对作者说点什么? 我来说一句
Python中re的match、search、findall、finditer区别
python 正则表达式是什么
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。
正则表达式的大致匹配过程是:
1、依次拿出表达式和文本中的字符比较。
2、如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3、如果表达式中有量词或边界,这个过程会稍微有一些不同。
Python 基础教程 第10章,正则表达式匹配问题
import rea = re.compile(r’\’))
scope是在全局变量里保存正则匹配出来的x,y,z变量,存到全局变量里去;
这本书的案例在except SyntaxError:后面少了点代码,只提供注释,前面其实已经提到用exec赋值了,只是代码里没有体现出来,我完善了下这个应该能看懂了,还有,正则已经把替换掉了,换成x,y,z对应的值