1,python 正则模块re

    要使用python3中的RE则必须引入 re模块

import re

2,match函数

result = re.match('^[A-Z]{1}[a-z]+', s)

 match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

匹配到了,则result 保存匹配到的结果

如下代码:

import re



def format_name(s):

    result = re.match('^[A-Z]{1}[a-z]+', s)

    if result:

        st = s

    else:

        st = s.capitalize()

    return st



print(list(map(format_name, ['adam', 'LISA', 'barT'])))

 结果:  ['Adam', 'Lisa', 'Bart']

正则表达式: ^[A-Z]{1}[a-z]*。匹配的是大写字母开头的字母

str的capitalize函数

capitalize() 返回一个字符串,首字母为大写,其他字母为小写

使用形式:str.capitalize()

注意,capitalize()返回的是str的一个副本,这个副本的特点是首字母大写,其余字母小写,并不改变str。

3,search 函数

模式编译后的对象的search函数 

pattern.search(string, pos=0, endpos, *, pattern=None) 

匹配字符串,默认从字符串的开头开始匹配,也可以通过pos和endpos来指定字符串的匹配位置(match默认从字符串开头开始匹配,pos=0)。找到match对象,通过group返回结果,未匹配返回None。多个匹配,也只返回第一个匹配的对象。

p=re.compile(r'\d+\s?\w*')
#不指定匹配区间
ss="kkkssss132ss"
aa = p.search(ss)
if aa:
      print ('匹配的内容是:', aa.group())
else:
      print ("正则表达式没有匹配到内容")

结果: 

匹配的内容是: 132ss

指定字符串开始结束匹配坐标

bb = p.search('98hsgdhh2345kjh',4,10)
if bb:
      print ('匹配的内容是:', bb.group())
else:
      print ("正则表达式没有匹配到内容")

结果:

匹配的内容是: 23

返回第一次匹配到的对象

ss="kkkssss132ss897"
aa = p.search(ss)
if aa:
      print ('匹配的内容是:', aa.group())
else:
      print ("正则表达式没有匹配到内容")

结果:

匹配的内容是: 132

re.search函数 

re. search(pattern, string, flags=0) 跟pattern的search相比,不可指定pos和endpos。从字符串开头开始匹配,一旦找到第一个匹配的就返回。
 

4,compile函数

编译模板成为模板对象。编译后的模板对象可多次使用去匹配模板。

import re
text1="11/27/2012"
text2="Nov 27,2012"
datepat1=re.compile(r"\d+/\d+/\d+")
match_res1=datepat1.match(text1)
print(match_res1)
match_res2=datepat1.match(text2)
print(match_res2)

 结果:

<re.Match object; span=(0, 10), match='11/27/2012'>
None

5,带括号的正则模板

带括号的正则模板,此为匹配内容捕获。

datepat2=re.compile(r"(\d+)/(\d+)/(\d+)")
match2_res1=datepat2.match(text1)
print(match2_res1)
match2_res2=datepat2.match(text2)
print(match2_res2)

结果:

<re.Match object; span=(0, 10), match='11/27/2012'>
None

要是查看捕获的分组,使用group及groups方法

print("_________group_________")
print(match2_res1.group())
for index,matched_text in enumerate(match2_res1.group()):
    print("group index:",index)
    print(matched_text)
print("_________groups_________")
print(match2_res1.groups())
for index,matched_text in enumerate(match2_res1.groups()):
    print("groups index:",index)
    print(matched_text)

_________group_________
11/27/2012
group index: 0
1
group index: 1
1
group index: 2
/
group index: 3
2
group index: 4
7
group index: 5
/
group index: 6
2
group index: 7
0
group index: 8
1
group index: 9
2
_________groups_________
('11', '27', '2012')
groups index: 0
11
groups index: 1
27
groups index: 2
2012

6,findall()函数

匹配所有,区别于match的从头开始匹配 ,findall()可以从任何地方匹配

text3="11/27/2012 11/02/2019"
match3_res1=datepat2.findall(text3)
print(match3_res1)

结果:[('11', '27', '2012'), ('11', '02', '2019')]

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐