python专业题材正则表达式
python 正则表达式 模糊匹配和精确匹配

python 正则表达式模糊匹配和精确匹配在Python中,正则表达式(regex)是用于模式匹配和数据提取的强大工具。
模糊匹配和精确匹配是两种常用的匹配方式。
模糊匹配:模糊匹配通常用于查找与给定模式相似的字符串。
在Python的正则表达式中,可以使用.*来匹配任意字符(包括空字符)出现任意次数。
例如,正则表达式a.*b将匹配所有以a开始,以b结束的字符串,其中a和b之间的字符数量和内容可以变化。
pythonimport repattern = 'a.*b'text = 'apple banana orange a b'matches = re.findall(pattern, text)print(matches) # 输出: ['apple banana orange a b']精确匹配:精确匹配用于查找与给定模式完全一致的字符串。
在Python的正则表达式中,可以使用^和$分别表示字符串的开头和结尾。
例如,正则表达式^hello$将只匹配字符串hello,而不匹配包含hello的更长字符串。
pythonimport repattern = '^hello$'text = 'hello world'matches = re.findall(pattern, text)print(matches) # 输出: []要使用正则表达式进行模糊匹配和精确匹配,您需要使用Python的re模块。
上面的例子演示了如何使用re模块的findall函数来查找与给定模式匹配的所有字符串。
python python正则表达式匹配不包含某几个字符的字符串方法

Python正则表达式匹配不包含某几个字符的字符串方法一、介绍在Python中,正则表达式是一种强大而灵活的工具,用于在文本中进行模式匹配和搜索。
正则表达式可以用于验证输入的字符串、提取特定的文本内容以及替换文本中的特定部分。
本文将重点介绍如何使用Python的正则表达式来匹配不包含某几个字符的字符串。
二、正则表达式基础在使用正则表达式之前,我们先了解一些基本概念和语法:2.1 字符匹配正则表达式中的字符可以直接匹配对应的字符。
例如,正则表达式abc可以匹配字符串中的”abc”。
2.2 元字符元字符是正则表达式中具有特殊含义的字符。
常用的元字符包括^、$、.、*、+、?、\等。
•^用于匹配字符串的开头。
•$用于匹配字符串的结尾。
•.用于匹配除换行符以外的任意字符。
•*用于匹配前面的字符零次或多次。
•+用于匹配前面的字符一次或多次。
•?用于匹配前面的字符零次或一次。
•\用于转义元字符或指定特殊字符。
2.3 字符类字符类用于匹配一组字符中的任意一个。
字符类使用方括号[]表示,例如[abc]可以匹配字符串中的”a”、“b”或”c”。
2.4 负向字符类负向字符类用于匹配不在指定字符类中的任意字符。
负向字符类使用方括号[^]表示,例如[^abc]可以匹配除了”a”、“b”和”c”以外的任意字符。
2.5 字符集合字符集合用于匹配一组连续的字符。
字符集合使用连字符-表示,例如[a-z]可以匹配任意小写字母。
2.6 量词量词用于指定匹配字符的次数。
常用的量词包括{n}、{n,}、{n,m}、*、+、?等。
•{n}匹配前面的字符恰好n次。
•{n,}匹配前面的字符至少n次。
•{n,m}匹配前面的字符至少n次,最多m次。
•*匹配前面的字符零次或多次。
•+匹配前面的字符一次或多次。
•匹配前面的字符零次或一次。
三、正则表达式匹配不包含某几个字符的字符串方法有时候,我们需要匹配的字符串不能包含某几个字符,这时可以使用负向字符类来实现。
python正则表达式详解

python正则表达式详解python 正则表达式详解1. 正则表达式模式模式描述^匹配字符串的开头$匹配字符串的末尾。
.匹配任意字符,除了换⾏符,当re.DOTALL标记被指定时,则可以匹配包括换⾏符的任意字符。
[...]⽤来表⽰⼀组字符,单独列出:[amk] 匹配 'a','m'或'k'[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re*匹配0个或多个的表达式。
re+匹配1个或多个的表达式。
re?匹配0个或1个由前⾯的正则表达式定义的⽚段,⾮贪婪⽅式re{ n}匹配n个前⾯表达式。
例如,"o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的两个o。
re{ n,}精确匹配n个前⾯表达式。
例如,"o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。
"o{1,}"等价于"o+"。
"o{0,}"则等价于"o*"。
re{ n,m}匹配 n 到 m 次由前⾯的正则表达式定义的⽚段,贪婪⽅式a| b匹配a或b(re)匹配括号内的表达式,也表⽰⼀个组(?imx)正则表达式包含三种可选标志:i, m, 或 x 。
只影响括号中的区域。
(?-imx)正则表达式关闭 i, m, 或 x 可选标志。
只影响括号中的区域。
(?: re)类似 (...), 但是不表⽰⼀个组(?imx:re)在括号中使⽤i, m, 或 x 可选标志(?-imx:re)在括号中不使⽤i, m, 或 x 可选标志(?#...)注释.(?= re)前向肯定界定符。
如果所含正则表达式,以 ... 表⽰,在当前位置成功匹配时成功,否则失败。
python正则findall函数的用法

python正则findall函数的用法一、概述正则表达式是一种在文本模式中搜索和匹配的模式匹配工具。
Python中的正则表达式模块提供了findall()函数,它用于在文本中查找与给定模式匹配的所有子串。
findall()函数返回一个列表,其中包含所有匹配的子串。
二、基本语法在Python中,使用re模块中的findall()函数进行正则表达式的匹配。
其基本语法如下:`findall(pattern, string)`* `pattern`:要匹配的正则表达式模式。
* `string`:要进行匹配的文本。
三、参数说明findall()函数接受两个参数,分别是正则表达式模式和要进行匹配的文本。
它返回一个列表,其中包含所有与正则表达式模式匹配的子串。
如果没有找到任何匹配,则返回一个空列表。
四、示例代码下面是一个示例代码,展示如何使用findall()函数进行正则表达式的匹配:```pythonimport re# 要匹配的文本text = "我喜欢吃苹果,苹果有营养"# 正则表达式模式pattern = r"\b(苹果)\b"# 执行匹配操作并获取所有匹配项matches = re.findall(pattern, text)# 输出匹配结果for match in matches:print(match)```输出结果:```苹果```五、注意事项在使用findall()函数时,需要注意以下几点:1. 确保使用正确的正则表达式模式,以便正确匹配所需的内容。
2. 如果需要查找多个连续的匹配项,可以使用其他正则表达式功能,如贪婪模式或非贪婪模式。
3. 在处理大量文本时,使用正则表达式可以大大提高效率。
但是,如果文本量较小,使用其他字符串方法可能更简单、更高效。
4. 匹配结果可能包含非打印字符(例如空格、标点符号等)。
如果需要过滤这些非打印字符,可以使用正则表达式的字符类和量词。
python中表示非数字的正则表达式

Python中表示非数字的正则表达式在Python编程中,正则表达式是一种强大的工具,用于在字符串中进行模式匹配和搜索。
在处理文本数据时,经常需要区分数字和非数字字符。
对于表示非数字的正则表达式,我们需要深入了解并掌握相关的语法和用法,以便在实际应用中发挥其最大的作用。
1. 非数字字符的表示在Python的正则表达式中,我们可以使用\ D来表示非数字字符。
这个转义字符表示任何非数字字符,包括字母、符号、空格等。
在实际应用中,我们可以利用这个表示方式来过滤或匹配文本中的非数字部分。
2. 正则表达式中的量词除了表示非数字字符外,正则表达式还可以使用不同的量词来匹配多个非数字字符。
\ D +表示匹配一个或多个非数字字符,\ D *表示匹配零个或多个非数字字符,\ D?表示匹配零个或一个非数字字符。
这些量词可以根据实际需求灵活运用,以满足不同的匹配要求。
3. 正则表达式的分组在处理复杂的文本数据时,可能需要将非数字字符进行分组处理。
正则表达式中可以使用小括号进行分组,从而更灵活地对非数字字符进行匹配和操作。
(\ D \ D \)+可以表示匹配两个非数字字符的重复,(\ D \){4}可以表示匹配四个连续的非数字字符。
4. 缩写字符集正则表达式中也可以使用缩写字符集来表示非数字字符。
\ w可以表示任何字母、数字或下划线字符,而\ W则表示与\ W相反,即任何非字母、数字或下划线字符。
这些缩写字符集在一些情况下可以简化正则表达式的编写,并提高代码的可读性。
总结回顾通过对Python中表示非数字的正则表达式的深入探讨,我们可以发现正则表达式是一种强大的工具,可以用于处理文本数据中的非数字字符。
在实际应用中,我们需要灵活运用\ D、量词、分组和缩写字符集等语法,来满足不同的匹配和操作需求。
我们也需要注意正则表达式的性能和匹配效率,以提高程序的执行效率。
个人观点与理解在实际编程中,正则表达式是我经常使用的工具之一。
python python正则表达式匹配不包含某几个字符的字符串方法

python python正则表达式匹配不包含某几个字符的字符串方法Python是一种高级编程语言,具有强大的正则表达式匹配功能。
在Python中,可以使用正则表达式来匹配不包含某几个字符的字符串。
下面介绍一些方法。
方法一:使用“^”符号在正则表达式中,“^”符号表示匹配字符串的开头。
因此,如果要匹配不包含某几个字符的字符串,可以在正则表达式中使用“^”符号,并在其后面跟上这些字符。
例如,要匹配不包含字母a、b、c的字符串,可以使用如下正则表达式:^[^abc]*$其中,“^”表示匹配字符串的开头,“[^abc]”表示不包含字母a、b、c,“*”表示匹配任意数量的字符,“$”表示匹配字符串的结尾。
方法二:使用“(?!...)”语法在正则表达式中,“(?!...)”语法表示否定预测先行断言,即匹配不包含某个模式的字符串。
例如,要匹配不包含字母a、b、c的字符串,可以使用如下正则表达式:^(?!.*[abc]).*$其中,“^”表示匹配字符串的开头,“(?!.*[abc])”表示不包含字母a、b、c,“.*”表示匹配任意数量的字符,“$”表示匹配字符串的结尾。
方法三:使用re.sub()函数在Python中,可以使用re.sub()函数来替换字符串中的匹配项。
因此,如果要匹配不包含某几个字符的字符串,可以使用re.sub()函数将这些字符替换为空字符串。
例如,要匹配不包含字母a、b、c的字符串,可以使用如下代码:import res = "hello world"s = re.sub("[abc]", "", s)print(s)输出结果为:“hello world”。
以上是Python中匹配不包含某几个字符的字符串的几种方法。
这些方法都可以有效地解决这个问题,具体使用哪种方法取决于具体的需求和场景。
在使用正则表达式时,需要注意一些细节,例如转义字符的使用、匹配模式的选择等。
python之正则表达式re.findall用法

python之正则表达式re.findall⽤法正则 re.findall 的简单⽤法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)语法:findall(pattern, string, flags=0)第⼀个参数,正则表达式第⼆个参数,搜索的是那些字符串第三个参数,匹配的模式,其中re.S使匹配包括换⾏在内的所有字符。
findall()函数是逐⾏匹配的。
⼀、正则表达式的含义懒惰匹配与贪婪匹配。
表达式 .* 的意思很好理解,就是单个字符匹配任意次,即贪婪匹配。
表达式 .*? 是满⾜条件的情况只匹配⼀次,即懒惰匹配var str = 'Anna is {age} years old,Bob is {age} years old too';var expr = /{.*?}/g;console.log(str.replace(expr, '13'));命令⾏输出: Anna is 13 years old,Bob is 13 years old too可以看出,懒惰模式下,只要满⾜条件,就不再向后匹配,以下是贪婪模式:var str = 'Anna is {age} years old,Bob is {age} years old too';var expr = /{.*}/g;console.log(str.replace(expr, '13'));命令⾏输出: Anna is 13 years old too返回string中所有与pattern相匹配的全部字串,返回形式为数组符号^表⽰匹配以https开头的的字符串返回,regular_v2 = re.findall(r"^https","https:///3/whatsnew/3.6.html")print (regular_v2) # ['https']⽤$符号表⽰以html结尾的字符串返回,判断是否字符串结束的字符串regular_v3 = re.findall(r"html$","https:///3/whatsnew/3.6.html")print (regular_v3) # ['html']# [...]匹配括号中的其中⼀个字符regular_v4 = re.findall(r"[t,w]h","https:///3/whatsnew/3.6.html")print (regular_v4) # ['th', 'wh']“d”是正则语法规则⽤来匹配0到9之间的数返回列表regular_v5 = re.findall(r"\d","https:///3/whatsnew/3.6.html")regular_v6 = re.findall(r"\d\d\d","https:///3/whatsnew/3.6.html/1234")print (regular_v5) # ['3', '3', '6']print (regular_v6) # ['123']⼩d表⽰取数字0-9,⼤D表⽰不要数字,也就是出了数字以外的内容返回regular_v7 = re.findall(r"\D","https:///3/whatsnew/3.6.html")print (regular_v7)# ['h', 't', 't', 'p', 's', ':', '/', '/', 'd', 'o', 'c', 's', '.', 'p', 'y', 't', 'h', 'o', 'n', '.', 'o', 'r', 'g', '/', '/', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '/', '.','.', 'h', 't', 'm', 'l']“w”在正则⾥⾯代表匹配从⼩写a到z,⼤写A到Z,数字0到9regular_v8 = re.findall(r"\w","https:///3/whatsnew/3.6.html")print (regular_v8)#['h', 't', 't', 'p', 's', 'd', 'o', 'c', 's', 'p', 'y', 't', 'h', 'o', 'n', 'o', 'r', 'g', '3', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '3', '6', 'h', 't', 'm', 'l']“W”在正则⾥⾯代表匹配除了字母与数字以外的特殊符号regular_v9 = re.findall(r"\W","https:///3/whatsnew/3.6.html") print (regular_v9)# [':', '/', '/', '.', '.', '/', '/', '/', '.', '.']。
python 正则表达式 re.x用法

一、简介Python是一种功能强大的编程语言,它提供了许多工具和库,可以帮助开发人员快速而高效地编写程序。
其中一个非常有用的工具就是正则表达式(regular expression),它可以帮助开发人员处理字符串和文本数据,并且可以在编写复杂的模式匹配时提供极大的便利。
在Python中,使用re模块可以轻松地处理正则表达式,其中re.x用法是re模块中的一个重要部分。
二、re.x的含义re模块中的re.x是一个标志(flag),它表示在进行正则表达式匹配时的一些特定选项。
re模块中的正则表达式可以使用一系列不同的标志来控制匹配的行为,re.x就是其中的一种。
re.x可以用来修改正则表达式的行为,例如忽略大小写、使`.`(点号)匹配包括换行符在内的任意字符等。
这些修改可以帮助开发人员更灵活地处理字符串和文本数据,提高匹配的精确度。
三、re.x的用法在Python中使用re.x的语法非常简单,只需要在正则表达式的前面添加相应的标志即可。
如果要忽略大小写进行匹配,可以在正则表达式前面加上re.I标志;如果要使`.`(点号)匹配包括换行符在内的任意字符,可以在正则表达式前面加上re.S标志。
以下是re.x的一些常用标志和它们的用法示例:1. re.I(re.IGNORECASE):忽略大小写进行匹配示例:假设有字符串"Hello, world!",我们想要匹配其中的"hello",但不论它是大小写形式如何,都要匹配成功。
这时可以使用re.I标志来进行忽略大小写匹配,代码如下:```pythonimport repattern = repile("hello", re.I)result = pattern.match("Hello, world!")```2. re.S(re.DOTALL):使`.`(点号)匹配包括换行符在内的任意字符示例:假设有一个多行的文本字符串,我们想要使用`.`(点号)来匹配其中的任意字符,包括换行符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
正则表达式正则表达式(Regular Expression)是一种文本模式,包括普通字符和特殊字符。
正则表达式使用单个字符串来描述、匹配一系列某个句法规则的字符串。
简介为什么使用正则表达式●测试字符串内的模式●替换文本●基于模式匹配从字符串中提取子字符串语法正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某些子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
普通字符普通字符包括没有显示指定为元字符(特殊字符和符号)的所有可打印和不可打印字符,这包括所有大写和小写字母、所有数字、所有标点符号和一些其他字符。
非打印字符特殊字符所谓特殊字符,就是一些含有特殊含义的字符。
许多元字符要求在试图匹配它们时特别对待。
若要匹配这些特殊字符,必须首先使用字符“转义”,即,将反斜杠“\”放在它们前面。
限定符限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
“*”匹配前面的子表达式零次或多次,例如/zo*/,匹配“*”前的字符“o”零次或多次,匹配“z”时匹配了“*”前的子表达式“o”是零次。
●*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上?就可以实现非贪婪或最小匹配。
例如:<H1>Chapter 1 -介绍正则表达式</H1>贪婪模式:下面的表达式匹配从开始小于符号(<) 到关闭H1 标记的大于符号(>) 之间的所有内容。
/<.*>/ ,贪婪模式匹配结果:<H1>Chapter 1 -介绍正则表达式</H1>非贪婪:如果您只需要匹配开始和介绍H1 标记,下面的非贪婪表达式只匹配<H1>。
/<.*?>/,非贪婪只会匹配:<H1>定位符定位符能够将正则表达式固定到行首或行尾。
注意:●不能讲限定符与定位点一起使用。
不允许诸如^*之类的表达式。
●若要匹配一行文本开始处的文本,在正则表达式的开始使用^字符。
●若要匹配一行文本的结束处的文本,在正则表达式的结束处使用$字符。
例如:/^Chapter [1-9][0-9]{0,1}$/字边界是单词和空格之间的位置。
非字边界是任何其他位置。
下面的表达式匹配单词Chapter 的开头三个字符,因为这三个字符出现在字边界的后面:/\bCha/\b字符的位置是非常重要的。
如果它位于匹配字符串的开始,它在单词开始处查找匹配项。
如果位于字符串的结尾,他在单词的结尾处查找匹配项。
\ter/b\下面的表达式匹配Chapter中的字符串apt,但不匹配aptitude中的字符串apt:/\Bapt/选择用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。
但圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
其中?: 是非捕获元之一,还有两个非捕获元是?= 和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
反向引用对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。
缓冲区编号从1 开始,最多可存储99 个捕获的子表达式。
每个缓冲区都可以使用\n访问,其中n 为一个标识特定缓冲区的一位或两位十进制数。
可以使用非捕获元字符?:、?=或?!来重写捕获,忽略对相关匹配的保存。
例如:var str = "Is is the cost of of gasoline going up up";var patt1 = /\b([a-z]+) \1\b/;document.write(str.match(patt1));捕获的表达式,正如[a-z]+ 指定的,包括一个或多个字母。
正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。
\1 指定第一个子匹配项。
字边界元字符确保只检测整个单词。
否则,诸如"is issued" 或"this is" 之类的词组将不能正确地被此表达式识别。
正则表达式后面的全局标记g 指定将该表达式应用到输入字符串中能够查找到的尽可能多的匹配。
表达式的结尾处的不区分大小写i 标记指定不区分大小写。
多行标记指定换行符的两边可能出现潜在的匹配。
组(?P<name>) ?P代表的是Python的语法扩展,<name>代表自定义命名,...代表命名的语法规则。
比如:(?P<num>\d+),命名之后可以在后面调用。
比如:re.findall(r'(?P<num>\d+)\[a-z]+(?P=num)',s) # 找出中间夹有字母的数字。
元字符运算符优先级匹配规则基本模式匹配模式是正则表达式最基本的元素,它们是一组描述字符串特征的字符。
字符簇[a-z] //匹配所有的小写字母[A-Z] //匹配所有的大写字母[a-zA-Z] //匹配所有的字母[0-9] //匹配所有的数字[0-9\.\-] //匹配所有的数字,句号和减号[ \f\r\t\n] //匹配所有的白字符[^a-z] //除了小写字母以外的所有字符[^\\\/\^] //除了(\)(/)(^)之外的所有字符[^\"\'] //除了双引号(")和单引号(')之外的所有字符确定重复出现^[a-zA-Z0-9_]{1,}$ // 所有包含一个以上的字母、数字或下划线的字符串^[1-9][0-9]{0,}$ // 所有的正整数^\-{0,1}[0-9]{1,}$ // 所有的整数^[-]?[0-9]+\.?[0-9]+$ // 所有的浮点数^[a-zA-Z0-9_]+$ // 所有包含一个以上的字母、数字或下划线的字符串^[1-9][0-9]*$ // 所有的正整数^\-?[0-9]+$ // 所有的整数^\-?[0-9]+\.?[0-9]*$ // 所有的浮点数示例常用函数和方法Patternpile(strPattern[, flag]):这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。
第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。
另外,你也可以在regex 字符串中指定模式,比如pile('pattern', re.I | re.M)与pile('(?im)pattern')是等价的。
可选值有:•re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)•M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)•S(DOTALL): 点任意匹配模式,改变'.'的行为•L(LOCALE): 使预定字符类\w \W \b \B \s \S 取决于当前区域设定•U(UNICODE): 使预定字符类\w \W \b \B \s \S \d \D 取决于unicode定义的字符属性•X(VERBOSE): 详细模式。
这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
以下两个正则表达式是等价的:a = pile(r"""\d + # the integral part\. # the decimal point\d * # some fractional digits""", re.X)>>> m = a.match('3.45')>>> m.group()'3.45'>>>Pattern对象是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。
Pattern不能直接实例化,必须使用pile()进行构造。
Pattern提供了几个可读属性用于获取表达式的相关信息:1.pattern: 编译时用的表达式字符串。
2.flags: 编译时用的匹配模式。
数字形式。
3.groups: 表达式中分组的数量。
4.groupindex: 以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。
import rep = pile(r'(\w+) (\w+)(?P<sign>.*)', re.DOTALL)print"p.pattern:", p.patternprint"p.flags:", p.flagsprint"p.groups:", p.groupsprint"p.groupindex:", p.groupindex### output #### p.pattern: (\w+) (\w+)(?P<sign>.*)# p.flags: 16# p.groups: 3# p.groupindex: {'sign': 3}re模块实例方法1.match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]):这个方法将从string的pos下标处起尝试匹配pattern;如果pattern结束时仍可匹配,则返回一个Match 对象;如果匹配过程中pattern无法匹配,或者匹配未结束就已到达endpos,则返回None。
pos和endpos的默认值分别为0和len(string);re.match()无法指定这两个参数,参数flags用于编译pattern时指定匹配模式。
注意:这个方法并不是完全匹配。
当pattern结束时若string还有剩余字符,仍然视为成功。
想要完全匹配,可以在表达式末尾加上边界匹配符'$'。
这个方法用于查找字符串中可以匹配成功的子串。
从string的pos下标处起尝试匹配pattern,如果pat tern结束时仍可匹配,则返回一个Match对象;若无法匹配,则将pos加1后重新尝试匹配;直到pos =endpos时仍无法匹配则返回None。