为了在文本操作时忽略大小写,需要在使用re 模块的时候给这些操作提供re.IGNORECASE 标志参数。比如

>>> text = 'UPPER PYTHON, lower python, Mixed Python'
>>> re.findall('python', text, flags=re.IGNORECASE)
['PYTHON', 'python', 'Python']
>>> re.sub('python', 'snake', text, flags=re.IGNORECASE)
'UPPER snake, lower snake, Mixed snake'
>>>

最后的那个例子揭示了一个小缺陷,替换字符串并不会自动跟被匹配字符串的大小写保持一致。为了修复这个,你可能需要一个辅助函数,就像下面的这样:
def matchcase(word):
  def replace(m):
    text = m.group()
    if text.isupper():
      return word.upper()
    elif text.islower():
      return word.lower()
    elif text[0].isupper():
      return word.capitalize()
    else:
      return word
  return replace

下面是使用上述函数的方法:
>>> re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)
'UPPER SNAKE, lower snake, Mixed Snake'
>>>

注: matchcase('snake') 返回了一个回调函数(参数必须是match 对象), sub() 函数除了接受替换字符串外,还能接受一个回调函数。

最新文章

  1. epoll LT/ET 深度剖析
  2. Qt界面编程之多窗口切换
  3. JavaScript原型链问题
  4. 关于c语言二维数组与指针的个人理解及处理办法。
  5. 八大排序算法之六--交换排序—快速排序(Quick Sort)
  6. 【转】nginx的优缺点
  7. ACM——快速排序法
  8. Linux crontab定时执行任务 命令格式与详细例子
  9. [JavaScript]plupload多图片上传图片
  10. javascript将form表单中的元素值封装成json格式
  11. myEclipse笔记(1):优化配置
  12. MATLAB - 为什么imshow(g,[])可以正常显示,而imshow(g)却显示空白图像?
  13. 如何用一个语句判断一个整数是不是二的整数次幂——从一道简单的面试题浅谈C语言的类型提升(type promotion)
  14. Linux 文本行列转换
  15. Java基础学习笔记十六 集合框架(二)
  16. English trip V2 - A 1. Fastival Teacher:Julia Key:
  17. 5.使用std的迭代器访问并修改图像
  18. canvas离屏技术与放大镜实现
  19. 小程序布局中class='container'的bug
  20. __slots__,__doc__,__del__,__call__,__iter__,__next__迭代器协议(三十六)

热门文章

  1. 基于ELK的简单数据分析
  2. 数据库操作相关(sql语句-php)
  3. linux定时任务cron配置说明
  4. xtrabackup安装部署(二)
  5. JVM JRE JDK三者的区别和联系
  6. ELK之生产日志收集构架(filebeat-logstash-redis-logstash-elasticsearch-kibana)
  7. Django运算符表达式
  8. mongostat和mongotop对mongodb数据库运行状态进行监控
  9. Python:lambda表达式(匿名函数)
  10. Cloud Native Application理论备忘录之(一)——Microservice architectural style