源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 394|回复: 11

[正则表达式] 利用正则表达式将字符串分组示例代码

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2017-8-10 08:59:24 | 显示全部楼层 |阅读模式
这篇文章主要给大家介绍了关于利用正则表达式将字符串分组的相关资料,文中分别介绍了利用itertools模块的groupby()方法和利用正则表达式是如何实现的,通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。

前言

最近工作中遇到一个问题,需求是碰到'122333<<<<'这种字符串,要将其连贯的部分取出,得出['1', '22', '333', '<<<<']这样的列表,能想到的常规办法,遍历字符串,后一个与前一个逐个比较,这样真的很麻烦!又想到了另外两种方法,话不多说了,来一起看看详细的示例代码:

一、实际上可以借助itertools模块的groupby()方法来处理:

import itertools 
 
Str = '122333<<<<' 
Lst = [] 
for key,group in itertools.groupby(s): 
 Lst.append(list(group)) 
 
print map(lambda x: ''.join(x), Lst) 

上面的处理,还是比较有技巧,也能得到想要的输出结果

['1', '22', '333', '<<<<']

二、但更酷点,更技巧处理方式是用正则表达式来处理:

import re 
 
Str = '122333<<<<' 
Lst = [] 
 
Pat = re.compile(r'((.)\2*)') 
Rst = [x[0] for x in re.findall(Pat, Str)] 
 
print Rst 

备注:

      1. (.)                # .匹配任意字符;(.)做分组,方便后面反向引用

      2. \2*                # \2对里面括号的反向引用;*代表是0个到多个;

      3. ((.)\2*)           # 连起来就是任意一个或多个字符组成的分组;

      4. (.)\1*             # 这种方式则可以取出唯一的值['1', '2', '3', '<'];同样非常方便

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

回复

使用道具 举报

2

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2022-8-17 01:55:53 | 显示全部楼层
66666666666666666666
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-9-21 19:19:42 | 显示全部楼层
不错的源码论坛
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

120

积分

注册会员

Rank: 2

积分
120
发表于 2022-10-7 22:29:03 | 显示全部楼层
哦哦哦哦哦哦哦哦哦
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2022-10-20 15:15:00 | 显示全部楼层
灌灌灌灌水
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-12-27 11:42:12 | 显示全部楼层
额风风风微风微风违法
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-9-15 04:39:55 | 显示全部楼层
收下来看看怎么样
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2024-10-1 20:03:10 | 显示全部楼层
而非为吾问无为谓娃娃
回复 支持 反对

使用道具 举报

0

主题

6085

回帖

72

积分

注册会员

Rank: 2

积分
72
发表于 2024-10-20 06:43:33 | 显示全部楼层
哈哈哈哈哈哈哈
回复 支持 反对

使用道具 举报

15

主题

2万

回帖

122

积分

注册会员

Rank: 2

积分
122
发表于 2024-10-22 18:31:35 | 显示全部楼层
66666666666666666666
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-22 11:45 , Processed in 0.234426 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表