首页 > 编程语言 > 详细

python的re模块中re.I模式在split方法下不生效解决办法

时间:2021-01-13 10:33:08      阅读:89      评论:0      收藏:0      [点我收藏+]

今天在学习re模块下的split方法时,发现re.I模式像下面这些写执行后之后不生效,#后面是执行结果,按正常的话加了re.I选项后应该是要忽略大小写的。


test_line = r‘Ab123abcABC456def789ggh‘
bb = re.split(r(a), test_line, re.I)
print(bb)

# [‘Ab123‘, ‘a‘, ‘bcABC456def789ggh‘]

 

后来上网查了一下,找到了两种方法可以解决不生效问题:

方法一:

使用(?i)这种写法,注意匹配项要用()括起来,比如下面的(a)

test_line = rAb123abcABC456def789ggh
aa = re.split(r(?i)(a), test_line)
print(aa)
# [‘‘, ‘A‘, ‘b123‘, ‘a‘, ‘bc‘, ‘A‘, ‘BC456def789ggh‘]

 

方法二:

使用re模块下的compile方法进行中转:

test_line = rAb123abcABC456def789ggh
m = re.compile(r(a), re.I)
dd = m.split(test_line)
print(dd)
# [‘‘, ‘A‘, ‘b123‘, ‘a‘, ‘bc‘, ‘A‘, ‘BC456def789ggh‘]

完整代码:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import re
 5 
 6 
 7 test_line = rAb123abcABC456def789ggh           # 定义一个字符串变量test_line
 8 m = re.compile(r(a), re.I)                     # 使用re的compile方法定义一个正则表达式规则
 9 aa = re.split(r(?i)(a), test_line)             # 在split方法中使用(?i)写法,忽略大小写
10 bb = re.split(r(a), test_line, re.I)           # 在split方法中使用re.I写法,忽略大小写
11 cc = re.search(r(a), test_line, re.I)          # 在search方法中使用re.I写法,忽略大小写
12 dd = m.split(test_line)                          # 在split方法中使用compile定义的正则表达式
13 print(aa)                                        # 打印aa变量的值
14 print(bb)                                        # 打印bb变量的值
15 print(cc.group())                                # 打印cc变量的group值
16 print(dd)                                        # 打印dd变量的值

执行结果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/Administrator/Desktop/mypython/test.py
[‘‘, A, b123, a, bc, A, BC456def789ggh]
[Ab123, a, bcABC456def789ggh]
A
[‘‘, A, b123, a, bc, A, BC456def789ggh]

进程已结束,退出代码0

至于不生效的原因我也不清楚,可能是版本原因吧,我的python版本是3.5。

技术分享图片

 

python的re模块中re.I模式在split方法下不生效解决办法

原文:https://www.cnblogs.com/xzy186/p/14270371.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!