#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
'''
re.match(pattern, string, flags=0)
match()函数从起始位置匹配一个模式,不过不是起始位置匹配成功的话,match()就返回none
parttern 匹配的正则表达式
string 要匹配的字符串
flags 标志位,用于控制正则表达式的表达方式 如:是否区分大小写,多行匹配等
'''
str = 'ffconcat version 1.0\nfile http://video.iyotv.com/WebossVideoSource/uk/chaonao48xiaoshi.mp4\nduration 6756'
print str
#print re.match('www', 'www.runoob.com').span() # 在起始位置匹配
#print re.match('com', 'www.runoob.com') # 不在起始位置匹配
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
matchObjOne = re.match(r'(.*) are (.*?) (.*?) (.*)', line, re.M|re.I)
#if matchObjOne:
# print 'matchObjOne.group()', matchObjOne.group()
#
# print matchObjOne.group(1)
# print matchObjOne.group(2)
# print matchObjOne.group(3)
# print matchObjOne.group(4)
# print matchObjOne.groups()
#
#else:
# print 'one no match'
'''
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响^和$
re.S 使.匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写的更易于理解
'''
'''
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
* 匹配0个或多个的表达式
? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
'''
# search()扫描整个字符串并返回第一个成功的匹配
# 匹配成功re.search方法返回一个匹配的对象,否则返回None
# 我们可以使用group(num)或groups()匹配对象函数来获取匹配表达式
searchObj = re.search(r'(.*) are (.*?) .*', line, re.M|re.I)
if searchObj:
print 'searchObj', searchObj.groups()
else:
print 'searchObj no matcn'
strOne = 'ffconcat version 1.0\r\nfile http://video.iyotv.com/WebossVideoSource/uk/chaonao48xiaoshi.mp4\r\nduration 6756'
searchObjOne = re.search(r'file (.*)\r\n', strOne, re.M|re.I|re.S)
if searchObjOne:
print 'searchObjOne:', searchObjOne.groups()
else:
print 'searchObjOne no match'
searchObjTwo = re.search(r'\r\n', strOne, re.M|re.I|re.S)
if searchObjTwo:
print 'searchObjTwo:', searchObjTwo.groups()
else:
print 'searchObjTwo no match'