刚完成公司安排的小任务,写个小笔记记录下。
(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()函数解决的问题。
测试数据集为购物网站用户评论
实例代码:
# -*-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()