导航:首页 > 编程语言 > python匹配字符串组

python匹配字符串组

发布时间:2024-11-12 01:03:11

python之re模块

re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,
而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。

1、字符

2、字符集

3、量词
贪婪模式:总是尝试匹配尽可能多的字符
非贪婪则相反,总是尝试匹配尽可能少的字符。

{0,} 匹配前一个字符 0 或多次,等同于 * 元字符
{+,} 匹配前一个字符 1 次或无限次,等同于 + 元字符
{0,1 }匹配前一个字符 0 次或 1 次,等同于 ? 元字符
如果 () 后面跟的是特殊元字符如 (adc)* 那么*控制的前导字符就是 () 里的整体内容,不再是前导一个字符

4、特殊分组用法表:只对正则函数返回对象的有用

5、断言
从断言的表达形式可以看出,它用的就是分组符号,只不过开头都加了一个问号,这个问号就是在说这是一个非捕获组,这个组没有编号,不能用来后向引用,只能当做断言。

匹配 <title>xxx</title> 中 xxx : (?<=<title>).*(?=</title>)
自己理解就是:

5、例子
(1)非
^(?!.*200).*$ ,只匹配200
^(?!.*[200|400]).*$ ,只匹配200和400
[^a-z] 反取,不含a-z字母的
(2) u4e00-u9fa5 中文
(3) r"([u4e00-u9fa5]s?[u4e00-u9fa5]+)" # 小 明 匹配这种单字中间有空格的

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用

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

search 扫描 整个字符串 并返回 第一个成功 的匹配。

re.match与re.search的区别:

正则表达式替换函数

替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接受

(2) 两个字符以上切割,放在 [ ] 中(不保留分隔符):

(3) 使用 ( ) 捕获分组(保留分割符):

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 ,findall 匹配所有。

用法:

注意1:一旦匹配成,再次匹配,是从前一次匹配成功的,后面一位开始的,也可以理解为匹配成功的字符串,不在参与下次匹配

注意2:如果没写匹配规则,也就是空规则,返回的是一个比原始字符串多一位的,空字符串行表

注意3:正则匹配到空字符的情况,如果规则里只有一个组,而组后面是 * 就表示组里的内容可以是 0 个或者多过,这样组里就有了两个意思:
一个意思是匹配组里的内容,
二个意思是匹配组里 0 内容(即是空白)
所以尽量避免用 * 否则会有可能匹配出空字符串

正则表达式,返回类型为表达式对象的
如:<_sre.SRE_Match object; span=(6, 7), match='a'>
返回对象的,需要用正则方法取字符串,

⑵ python 正则表达式,怎样匹配以某个字符串开头,以某个字符串结尾的情况

python正则匹配以xx开头以xx结尾的单词的步骤:

1、假设需要匹配的字符串为:site sea sue sweet see case sse ssee loses需要匹配的为以s开头以e结尾的单词。正确的正则式为:sS*?e

2、使用python中re.findall函数表示匹配字符串中所有的可能选项,re是python里的正则表达式模块。findall是其中一个方法,用来按照提供的正则表达式,去匹配文本中的所有符合条件的字符串。

3、代码和结果如下:

text ='site sea sue sweet see case sse ssee loses'

re.findall(r'sS*?e',text)

结果为:['site', 'sue', 'see', 'sse', 'ssee']

(2)python匹配字符串组扩展阅读:

python正则匹配,以某某开头某某结尾的最长子串匹配

代码如下:

regVersions = re.search(r'(V|v)[0-9].*[0-9]', filename)

if regVersions:

print regVersions.group()


⑶ python 正则表达式,怎么从字符串中匹配成组的所有结果

匹配所有结果的python程租迅序如下(注意图中源前塌代码的缩进)

import re

a="lege.teeth34eatedecdeath#e0t~"

regex='(.)e(.)t(.)'弊悔此

result=[]

for i in range(len(a)-4):

b=a[i:i+5]

obj=re.match(regex,b)

if obj:

result.append((obj.group(1),obj.group(2),obj.group(3)))

print(result)

⑷ Python用正则表达式匹配含有中文的字符串,匹配不到

代码如下:

#coding=utf-8

importre
s=u'<li><aclass="nav-first"href="/">首页</a></li>'
r=re.compile(u'<li><asclass="[^"]*"shref="[^"]">(.*?)(?=</a></li>)')
ss=r.findall(s)
forstrinss:
printstr

运行结果:

阅读全文

与python匹配字符串组相关的资料

热点内容
我的世界服务器如何换 浏览:60
程序员要拒绝吗 浏览:124
下期视频怎么解压 浏览:381
方法命令函数指令 浏览:130
视频已加密请输入密码确认 浏览:362
香港中产程序员 浏览:917
python适合什么编译器 浏览:844
双强力夹文件夹使用方法 浏览:330
程序员瑜伽教学 浏览:809
python网页分析工具 浏览:689
服务器如何手动关机 浏览:47
火柴盒app什么都加载不出来 浏览:321
为什么腾讯视频app不显示缓存列表 浏览:408
android网络服务器 浏览:972
618程序员男扮女装 浏览:997
框架梁为什么是非加密区 浏览:993
什么app能把删了的照片恢复 浏览:360
公务员说程序员工资 浏览:400
怎样设置自己手机号码加密 浏览:700
服务器怎么设置登录地址 浏览:997