Python正则表达式re模块简明笔记
PYTHON正则表达式re模块使用说明

PYTHON正则表达式re模块使⽤说明⾸先,运⾏ Python 解释器,导⼊ re 模块并编译⼀个 RE:#!pythonPython 2.2.2 (#1, Feb 10 2003, 12:57:01)>>> import re>>> p = pile('[a-z]+')>>> p<_sre.SRE_Pattern object at 80c3c28>现在,你可以试着⽤ RE 的 [a-z]+ 去匹配不同的字符串。
⼀个空字符串将根本不能匹配,因为 + 的意思是 “⼀个或更多的重复次数”。
在这种情况下 match() 将返回 None,因为它使解释器没有输出。
你可以明确地打印出 match() 的结果来弄清这⼀点。
#!python>>> p.match("")>>> print p.match("")None现在,让我们试着⽤它来匹配⼀个字符串,如 "tempo"。
这时,match() 将返回⼀个 MatchObject。
因此你可以将结果保存在变量⾥以便后⾯使⽤。
#!python>>> m = p.match( 'tempo')>>> print m<_sre.SRE_Match object at 80c4f68>现在你可以查询 `MatchObject` 关于匹配字符串的相关信息了。
MatchObject 实例也有⼏个⽅法和属性;最重要的那些如下所⽰:⽅法/属性作⽤group()返回被 RE 匹配的字符串start()返回匹配开始的位置end()返回匹配结束的位置span()返回⼀个元组包含匹配 (开始,结束) 的位置试试这些⽅法不久就会清楚它们的作⽤了:#!python>>> m.group()'tempo'>>> m.start(), m.end()(0, 5)>>> m.span()(0, 5)group() 返回 RE 匹配的⼦串。
python中正则表达式 re.search 用法 -回复

python中正则表达式re.search 用法-回复Python中re模块提供了re.search()函数,该函数用于在字符串中搜索匹配正则表达式的第一个位置。
本文将逐步介绍re.search的用法,包括引入re模块、函数语法和各参数含义,以及具体实例。
第一步:引入re模块首先,我们需要在Python代码中引入re模块,如下所示:pythonimport re通过使用`import`语句引入re模块,我们可以使用re模块中提供的各种函数和方法。
第二步:re.search()函数的语法和参数含义re.search()函数的语法如下:pythonre.search(pattern, string, flags=0)re.search()函数接受三个参数:- pattern:表示正则表达式的字符串,用于指定需要搜索的模式。
- string:表示被搜索的字符串。
- flags:可选参数,用于指定匹配模式。
常用的flags包括`re.I`(忽略大小写)、`re.M`(多行匹配)等。
函数返回值是一个`Match`对象,如果匹配成功,则返回第一个匹配的结果;如果没有找到匹配的结果,则返回`None`。
第三步:具体示例说明接下来,我们将通过一个示例来说明re.search()函数的具体用法。
假设我们想在一个字符串中查找所有以"re"开头的单词,我们可以使用re.search()函数来实现。
以下是示例代码:pythonimport redef find_words_starting_with_re(text):result = re.search(r'\b(re\w+)', text, re.I)if result:return result.group()else:return "No matches found"text = "Regular expression is a powerful tool in programming" search_result = find_words_starting_with_re(text)print(search_result)在上述示例中,我们定义了一个函数`find_words_starting_with_re()`,该函数接受一个字符串作为参数。
黑马程序员Python教程python re 模块及正则表达式调用认识-3

python re 模块及正则表达式调用认识-32)也可以是一段有序字符集,for example[a-z] will match any lower case ASCII letter,[0-5][0-9] will match all the two-digits numbers from 00 to 59, and[0-9A-Fa-f] will match any hexadecimal digit. 如果'-'字符放在了字符类的开头处或末尾处,该字符就会被当作一个普通字符来看待,(e.g.[a\-z]) or if it’s placed as the first or last character (e.g.[a-]),it will match a literal'-'.>>> print re.search(r'[a-z]{3}','34asdfg98dfg').group()asd>>> print re.findall(r'[a-z]{3}','34asdfg98dfg')['asd', 'dfg']>>> print re.findall(r'[0-5][0-9]','34asFGg38dfg')['34', '38'][0-9a-fA-F] 匹配单个的十六进制数字,并且大小写不敏感。
也可以结合范围定义与单个字符定义。
[0-9a-fxA-FX] 匹配一个十六进制数字或字母X。
再次强调一下,字符和范围定义的先后顺序对结果没有影响。
>>> print re.findall(r'[0-9A-Fa-f]','4A 80 7f 9z')#实际就是0-9,A-F,a-f 这一顺序数字和字符间进行匹配['4', 'A', '8', '0', '7', 'f', '9']>>> print re.findall(r'[0-9a-fxA-FX]{3}','we2rt4fxdef8AXgh')#可以添加特定的字符x,但是def被匹配了,why?['4fx', 'def', '8AX']>>>>>> print re.findall(r'[a\-z]..','AXgh-erg5-6yfhka-jjhh') # a-z及其-都匹配,长度3个字符['-er', '-6y', 'a-j']>>> print re.findall(r'[a-]..','AXgh-erg5-6yfhka-jjhh')#z省略,匹配到最后['-er', '-6y', 'a-j']>>>3)若其中含有特殊字符,则特殊字符作为普通字符对待,For example,[(+*)] will match any of the literal characters'(','+','*', or')'.>>> print re.findall(r'[(+*)].','AXg(df+dgf4*dfg34)fdg')['(d', '+d', '*d', ')f']4)\w or\S也可以包含在其中,是否进行匹配主要取决于LOCALE or UNICODE mode 字符模式。
Python系列之正则表达式详解

Python系列之正则表达式详解Python 正则表达式模块 (re) 简介Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使⽤这⼀内嵌于 Python 的语⾔⼯具,尽管不能满⾜所有复杂的匹配情况,但⾜够在绝⼤多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息。
Python 会将正则表达式转化为字节码,利⽤ C 语⾔的匹配引擎进⾏深度优先的匹配。
表 1. 正则表达式元字符和语法符号说明实例.表⽰任意字符,如果说指定了 DOTALL 的标识,就表⽰包括新⾏在内的所有字符。
'abc' >>>'a.c' >>>结果为:'abc'^表⽰字符串开头。
'abc' >>>'^abc' >>>结果为:'abc'$表⽰字符串结尾。
'abc' >>>'abc$' >>>结果为:'abc'*, +, ?'*'表⽰匹配前⼀个字符重复 0 次到⽆限次,'+'表⽰匹配前⼀个字符重复 1次到⽆限次,'?'表⽰匹配前⼀个字符重复 0 次到1次'abcccd' >>>'abc*' >>>结果为:'abccc''abcccd' >>>'abc+' >>>结果为:'abccc''abcccd' >>>'abc?' >>>结果为:'abc'*?, +?, ??前⾯的*,+,?等都是贪婪匹配,也就是尽可能多匹配,后⾯加?号使其变成惰性匹配即⾮贪婪匹配'abc' >>>'abc*?' >>>结果为:'ab''abc' >>>'abc??' >>>结果为:'ab''abc' >>>'abc+?' >>>结果为:'abc'{m}匹配前⼀个字符 m 次'abcccd' >>>'abc{3}d' >>>结果为:'abcccd' {m,n}匹配前⼀个字符 m 到 n 次'abcccd' >>> 'abc{2,3}d' >>>结果为:'abcccd' {m,n}?匹配前⼀个字符 m 到 n 次,并且取尽可能少的情况'abccc' >>> 'abc{2,3}?' >>>结果为:'abcc'\对特殊字符进⾏转义,或者是指定特殊序列 'a.c' >>>'a\.c' >>> 结果为: 'a.c'[]表⽰⼀个字符集,所有特殊字符在其都失去特殊意义,只有: ^ - ] \ 含有特殊含义'abcd' >>>'a[bc]' >>>结果为:'ab'|或者,只匹配其中⼀个表达式,如果|没有被包括在()中,则它的范围是整个正则表达式'abcd' >>>'abc|acd' >>>结果为:'abc' ( … )被括起来的表达式作为⼀个分组. findall 在有组的情况下只显⽰组的内容 'a123d' >>>'a(123)d' >>>结果为:'123'(?#...)注释,忽略括号内的内容特殊构建不作为分组 'abc123' >>>'abc(?#fasd)123' >>>结果为:'abc123'(?= …)表达式’…’之前的字符串,特殊构建不作为分组在字符串’ pythonretest ’中 (?=test) 会匹配’pythonre ’(?!...)后⾯不跟表达式’…’的字符串,特殊构建不作为分组如果’ pythonre ’后⾯不是字符串’ test ’,那么(?!test) 会匹配’ pythonre ’(?<=… )跟在表达式’…’后⾯的字符串符合括号之后的正则表达式,特殊构建不作为分组正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’def ’(?:)取消优先打印分组的内容'abc' >>>'(?:a)(b)' >>>结果为'[b]'?P<>指定Key'abc' >>>'(?P<n1>a)>>>结果为:groupdict{n1:a}表 2. 正则表达式特殊序列特殊表达式序列说明\A只在字符串开头进⾏匹配。
python中正则表达式 re.search 用法 -回复

python中正则表达式re.search 用法-回复Python中的正则表达式模块(re模块)提供了一些函数,用于处理和操作正则表达式。
re.search()是其中一个常用的函数,用于在给定的字符串中搜索指定的模式。
re.search()函数的语法如下:re.search(pattern, string, flags=0)- pattern: 要匹配的正则表达式。
- string: 要被搜索的字符串。
- flags: 可选参数,用于指定匹配模式。
该函数在给定的字符串中搜索匹配的模式,并返回一个匹配对象。
如果找到匹配的模式,则re.search()函数返回的匹配对象包含了首次匹配的信息;如果没有找到匹配的模式,则返回None。
下面是一个具体的例子,来展示re.search()函数的用法和一步一步回答相关疑问。
1. 导入re模块在使用re.search()函数之前,我们需要先导入re模块。
代码示例:pythonimport re2. 创建一个测试字符串为了展示re.search()函数的用法,我们需要创建一个测试字符串。
这个测试字符串将会用于搜索匹配的模式。
代码示例:pythontext = "Hello, I am a Python developer."3. 创建一个正则表达式模式在使用re.search()函数之前,我们需要先创建一个正则表达式模式,用于搜索匹配的内容。
正则表达式模式是一个字符串,包含了我们想要搜索的模式。
代码示例:pythonpattern = r"Python"4. 使用re.search()函数进行搜索现在我们可以使用re.search()函数,在给定的字符串中搜索匹配的模式了。
代码示例:pythonmatch = re.search(pattern, text)5. 判断是否找到匹配的模式使用re.search()函数后,我们需要判断是否找到了匹配的模式。
python正则表达式re使用模块(match()、search()和compile())

python正则表达式re使⽤模块(match()、search()和compile())摘录 python核⼼编程python的re模块允许多线程共享⼀个已编译的正则表达式对象,也⽀持命名⼦组。
下表是常见的正则表达式属性:函数/⽅法描述仅仅是re模块函数compile(pattern,flags=0)使⽤任何可选的标记来编译正则表达式的模式,然后返回⼀个正则表达式对象re模块函数和正则表达式对象的⽅法match(pattern,string,flags=0)尝试使⽤带有可选标记的正则表达式的模式来匹配字符串,成功则返回匹配的对象,失败则返回Nonesearch(pattern,string,flags=0)使⽤可选标记搜索字符串中第⼀次出现的正则表达式模式,成功则返回匹配对象,失败则返回Nonefindall(pattern,string[,flags])查找字符串中所有(⾮重复)出现的正则表达式模式,返回⼀个匹配列表finditer(pattern,string,[,flags])和findall()函数相同,但返回的是⼀个迭代器。
对于每次匹配,迭代器都返回⼀个匹配对象split(pattern,string,max=0)根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表,分割最多操作max次(默认分割所有匹配成功的位置)re模块函数和正则表达式对象⽅法sub(pattern,repl,string,count=0)使⽤repl替换正则表达式模式在字符串中出现的位置,除⾮定义count,否则替换所有purge()清除隐式编译的正则表达式模式常⽤的匹配对象⽅法group(num=0)返回整个匹配对象,或者编号为num的特定⼦组groups(default=None)返回⼀个包含所有匹配⼦组的元组(如果没有,则返回⼀个空元组)groupdict(default=None)返回⼀个包含所有匹配的命名⼦组的字典,所有⼦组名称作为字典的键(如没有,则返回⼀个空字典)常⽤的模块属性re.I、re.IGNORECASE不区分⼤写的匹配re.L、re.LOCALE根据所使⽤的本地语⾔环通过\w\W\b\B\s\S实现匹配re.M、re.MULTILINE^和$分别匹配⽬标字符串中⾏的起始和结尾,⽽不是严格的匹配整个字符串本⾝的开始和结尾re.S、re.DOTALL点号.通常匹配除了换⾏符\n之外的所有单个字符,该标记表⽰点号能够匹配全部字符re.X、re.VERBOSE通过反斜线转义,否则所有空格加上#(以及在该⾏中所有后续问题)都被忽略,除⾮在⼀个字符类中或者允许注释并且提⾼可读性compile()编译正则表达式在模式匹配发⽣之前,正则表达式模式必须编译成正则表达式对象,⽽且正则表达式在执⾏的过程中可能进⾏多次的⽐较操作。
python之re模块(正则表达式)分组、断言详解

python之re模块(正则表达式)分组、断⾔详解提⽰:阅读本⽂需要有⼀定的正则表达式基础。
正则表达式中的断⾔,作为⾼级应⽤出现,倒不是因为它有多难,⽽是概念⽐较抽象,不容易理解⽽已,今天就让⼩菜通俗的讲解⼀下。
如果不⽤断⾔,以往⽤过的那些表达式,仅仅能获取到有规律的字符串,⽽不能获取⽆规律的字符串。
举个例⼦,⽐如html源码中有<title>xxx</title>标签,⽤以前的知识,我们只能确定源码中的<title>和</title>是固定不变的。
因此,如果想获取页⾯标题(xxx),充其量只能写⼀个类似于这样的表达式:<title>.*</title>,⽽这样写匹配出来的是完整的<title>xxx</title>标签,并不是单纯的页⾯标题xxx。
想解决以上问题,就要⽤到断⾔知识。
在讲断⾔之前,读者应该先了解分组,这有助于理解断⾔。
分组在正则中⽤()表⽰,根据⼩菜理解,分组的作⽤有两个:n 将某些规律看成是⼀组,然后进⾏组级别的重复,可以得到意想不到的效果。
n 分组之后,可以通过后向引⽤简化表达式。
先来看第⼀个作⽤,对于IP地址的匹配,简单的可以写为如下形式:\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}但仔细观察,我们可以发现⼀定的规律,可以把.\d{1,3}看成⼀个整体,也就是把他们看成⼀组,再把这个组重复3次即可。
表达式如下:\d{1,3}(.\d{1,3}){3}这样⼀看,就⽐较简洁了。
再来看第⼆个作⽤,就拿匹配<title>xxx</title>标签来说,简单的正则可以这样写:<title>.*</title>可以看出,上边表达式中有两个title,完全⼀样,其实可以通过分组简写。
表达式如下:<(title)>.*</\1>这个例⼦实际上就是反向引⽤的实际应⽤。
python的re库用法

Python的re库用法1. 介绍Python的re库是一个强大的正则表达式处理库,提供了丰富的功能和方法,用于在文本中进行模式匹配和搜索。
正则表达式是一种描述文本模式的工具,可以用来检查一个字符串是否符合某种模式、从字符串中提取特定信息或者替换字符串中的部分内容。
re库使得我们可以使用正则表达式来处理各种复杂的字符串操作。
2. 正则表达式基础2.1 字符匹配正则表达式中最基本的元素就是字符匹配,即匹配具体的字符。
例如,正则表达式a表示匹配单个字符a。
还可以使用.来匹配任意字符。
2.2 字符集合字符集合允许我们指定多个可能出现在某个位置上的字符。
使用方括号[]来定义字符集合。
例如,正则表达式[abc]表示匹配单个字符a、b或者c。
2.3 转义字符有些特殊字符在正则表达式中有特殊含义,比如.表示任意字符。
如果我们要匹配这些特殊字符本身,就需要使用转义字符\。
例如,正则表达式\.表示匹配单个.。
2.4 重复匹配正则表达式允许对字符或者字符集合进行重复匹配。
常用的重复匹配符号包括*、+和。
其中,*表示匹配0次或多次,+表示匹配1次或多次,而?表示匹配0次或1次。
2.5 边界匹配边界匹配用于指定字符串的开始和结束位置。
正则表达式中的元字符\b表示单词边界,\B表示非单词边界。
3. re库的常用函数3.1 match函数match函数用于从字符串的开始位置进行匹配,如果字符串开头不符合正则表达式,则返回None。
它的基本语法为:re.match(pattern, string, flags=0)其中,pattern为正则表达式,string为要匹配的字符串,flags为可选参数,用于控制匹配方式。
3.2 search函数search函数用于在整个字符串中搜索第一个符合正则表达式的位置,并返回一个包含该位置信息的match对象。
它的基本语法为:re.search(pattern, string, flags=0)3.3 findall函数findall函数用于搜索整个字符串,并返回所有符合正则表达式的非重叠模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python正则表达式re模块简明笔记要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。
作者:FunHacks来源:FunHacks|2016-12-28 11:20收藏分享简介正则表达式(regular expression)是可以匹配文本片段的模式。
最简单的正则表达式就是普通字符串,可以匹配其自身。
比如,正则表达式‘hello’ 可以匹配字符串‘hello’。
要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。
正则表达式有多种不同的风格,下表列出了适用于Python 或Perl 等编程语言的部分元字符以及说明:re 模块在Python 中,我们可以使用内置的re 模块来使用正则表达式。
有一点需要特别注意的是,正则表达式使用\对特殊字符进行转义,比如,为了匹配字符串‘’,我们需要使用正则表达式'python\.org',而Python 的字符串本身也用\转义,所以上面的正则表达式在Python 中应该写成'python\\.org',这会很容易陷入\的困扰中,因此,我们建议使用Python 的原始字符串,只需加一个r 前缀,上面的正则表达式可以写成:r'python\.org're 模块提供了不少有用的函数,用以匹配字符串,比如:∙compile 函数∙match 函数∙search 函数∙findall 函数∙finditer 函数∙split 函数∙sub 函数∙subn 函数re 模块的一般使用步骤如下:∙使用compile 函数将正则表达式的字符串形式编译为一个Pattern 对象∙通过Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个Match 对象)∙最后使用Match 对象提供的属性和方法获得信息,根据需要进行其他的操作compile 函数compile 函数用于编译正则表达式,生成一个Pattern 对象,它的一般使用形式如下:pile(pattern[, flag])其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。
下面,让我们看看例子。
import re# 将正则表达式编译成Pattern 对象pattern = pile(r'\d+')在上面,我们已将一个正则表达式编译成Pattern 对象,接下来,我们就可以利用pattern 的一系列方法对文本进行匹配查找了。
Pattern 对象的一些常用方法主要有:∙match 方法∙search 方法∙findall 方法∙finditer 方法∙split 方法∙sub 方法∙subn 方法match 方法match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。
它的一般使用形式如下:match(string[, pos[, endpos]])其中,string 是待匹配的字符串,pos 和endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是0 和len (字符串长度)。
因此,当你不指定pos 和endpos 时,match 方法默认匹配字符串的头部。
当匹配成功时,返回一个Match 对象,如果没有匹配上,则返回None。
看看例子。
>>> import re>>> pattern = pile(r'\d+') # 用于匹配至少一个数字>>> m = pattern.match('one12twothree34four') # 查找头部,没有匹配>>> print mNone>>> m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配>>> print mNone>>> m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配>>> print m # 返回一个Match 对象<_sre.SRE_Match object at 0x10a42aac0>>>> m.group(0) # 可省略0'12'>>> m.start(0) # 可省略03>>> m.end(0) # 可省略05>>> m.span(0) # 可省略0(3, 5)在上面,当匹配成功时返回一个Match 对象,其中:∙group([group1, …])方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用group()或group(0);∙start([group])方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为0;∙end([group])方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为0;∙span([group])方法返回(start(group), end(group))。
再看看一个例子:>>> import re>>> pattern = pile(r'([a-z]+) ([a-z]+)', re.I) # re.I 表示忽略大小写>>> m = pattern.match('Hello World Wide Web')>>> print m # 匹配成功,返回一个Match 对象<_sre.SRE_Match object at 0x10bea83e8>>>> m.group(0) # 返回匹配成功的整个子串'Hello World'>>> m.span(0) # 返回匹配成功的整个子串的索引(0, 11)>>> m.group(1) # 返回第一个分组匹配成功的子串'Hello'>>> m.span(1) # 返回第一个分组匹配成功的子串的索引(0, 5)>>> m.group(2) # 返回第二个分组匹配成功的子串'World'>>> m.span(2) # 返回第二个分组匹配成功的子串(6, 11)>>> m.groups() # 等价于(m.group(1), m.group(2), ...)('Hello', 'World')>>> m.group(3) # 不存在第三个分组Traceback (most recent call last):File "<stdin>", line 1, in <module> IndexError: no such groupsearch 方法search 方法用于查找字符串的任何位置,它也是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果,它的一般使用形式如下:search(string[, pos[, endpos]])其中,string 是待匹配的字符串,pos 和endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是0 和len (字符串长度)。
当匹配成功时,返回一个Match 对象,如果没有匹配上,则返回None。
让我们看看例子:>>> import re>>> pattern = pile('\d+')>>> m = pattern.search('one12twothree34four') # 这里如果使用match 方法则不匹配>>> m< _sre.SRE_Match object at 0x10cc03ac0>>>> m.group()'12'>>> m = pattern.search('one12twothree34four', 10, 30) # 指定字符串区间>>> m< _sre.SRE_Match object at 0x10cc03b28>>>> m.group()'34'>>> m.span()(13, 15)再来看一个例子:# -*- coding: utf-8 -*-import re# 将正则表达式编译成Pattern 对象pattern = pile(r'\d+')# 使用search() 查找匹配的子串,不存在匹配的子串时将返回None# 这里使用match() 无法成功匹配m = pattern.search('hello 123456 789')if m:# 使用Match 获得分组信息print 'matching string:',m.group()print 'position:',m.span()执行结果:matching string: 123456position: (6, 12)findall 方法上面的match 和search 方法都是一次匹配,只要找到了一个匹配的结果就返回。
然而,在大多数时候,我们需要搜索整个字符串,获得所有匹配的结果。
findall 方法的使用形式如下:findall(string[, pos[, endpos]])其中,string 是待匹配的字符串,pos 和endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是0 和len (字符串长度)。