Python正则表达式教程之一:基础篇

作者:一根笨茄子 时间:2023-11-13 19:46:02 

前言

之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考PyCon2016上的一个视频Regular Expressions。

我将分几篇文章对正则表达式进行总结。

以下是第一部分,基础: 

基础部分

这里总结了正则表达式最基础的用法,其中大部分内容对我(以及大部分程序员)来说都是平时经常用到的,所以我就一笔带过了,只对其中的几处用例子说明。 

     .           除了换行之外的其他所有字符

     ^           行首

     $           行尾

     [abcd]      abcd其中的一个字符

     [^abcd]     除了abcd之外的任意字符

     [a-d]       相当于[abcd]

     [a-dz]      相当于[abcdz]

     \b          单词边界

     \w          字母数字或下划线 相当于[a-zA-Z0-9_]

     \W          与\w相反

     \d          数字,相当于[0-9]

     \D          与\d相反

     \s          空白字符,相当于[ \t\n\r\f\v]

     \S          与\s相反

     {5}         在此之前的正则表达式部分(下同)准确的出现5次

     {2,5}       ~出现2到5次

     {2,}        ~出现2次或多次

     {,5}        ~出现0到5次

     *          ~出现0次或多次

     ?          ~出现0次或1次

     +           ~出现1次或多次

     ABC|DEF     匹配ABC或者DEF

     \          转义字符,如\表示匹配*,\$表示匹配$* 

\b、 \用以下几个例子简单说明一下: 

     \b:


>>> re.search(r'\bhello\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello,world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'\bhello\b', 'hello_world')
>>>

其实这里,\b大体上和\W一支,但是\b可以匹配行首行尾等非显示类的字符,而\W不可以。 

     \:


>>> re.search(r'\$100', '$100')
<_sre.SRE_Match object; span=(0, 4), match='$100'>
>>> re.search(r'$100', '$100')
>>>

想要匹配那些在正则表达式中有特殊含义的字符,如$、^、*等,就需要用\进行转义。 

raw string:

另外,前面例子中,模式字符串(pattern)前面都加了一个r,这个r的意思是raw string,后面所接的字符串,Pyhton解释器无需对其进行转义。因为,\在Python字符串中和正则表达式中都有特殊含义,所以如果不是raw string,那么要表达一个\字符,就需要四个\了(在Python解释器中先转义一次,2个\表示1个\,剩下2个\,在正则表达式中又转义一次,最终剩下一个\)。例如:


>>> re.search(r'\bhello\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search('\bhello\b', 'hello')
>>> re.search('\\bhello\\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>

>>> re.search('\\\\hello\\\\', '\\hello\\')
<_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>
>>> re.search(r'\\hello\\', '\\hello\\')
<_sre.SRE_Match object; span=(0, 7), match='\\hello\\'>
>>> print('\\hello\\')
\hello\

来源:http://blog.guoyb.com/2017/02/27/python-regex/

标签:python,正则表达式
0
投稿

猜你喜欢

  • Python命令行运行文件的实例方法

    2023-05-10 13:57:56
  • go Antlr重构脚本解释器实现示例

    2024-04-26 17:19:44
  • 解决Pytorch内存溢出,Ubuntu进程killed的问题

    2023-08-31 22:12:16
  • 需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析

    2023-11-19 02:10:43
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • 深入浅析Python传值与传址

    2021-01-24 01:19:46
  • python中MySQLdb模块用法实例

    2024-01-25 01:19:27
  • python 集合常用操作汇总

    2023-11-15 08:41:22
  • Python+tkinter使用80行代码实现一个计算器实例

    2023-10-11 23:29:31
  • SQL 查询性能优化 解决书签查找

    2024-01-28 08:33:53
  • Django框架安装及项目创建过程解析

    2022-09-20 12:55:45
  • mysql8.0忘记密码修改与net命令服务名无效问题

    2024-01-21 10:23:57
  • 解决Python运算符重载的问题

    2022-07-04 23:09:33
  • 如何编写一个只在Web服务关闭时执行的程序?

    2009-11-08 19:03:00
  • asp ajax跨域提交数据

    2011-04-11 10:56:00
  • Node+OCR实现图像文字识别功能

    2024-04-22 13:01:41
  • 全面了解Python的getattr(),setattr(),delattr(),hasattr()

    2021-01-11 11:30:33
  • PHP实现的XXTEA加密解密算法示例

    2023-07-13 22:29:49
  • Python实现识别图像中人物的示例代码

    2023-11-10 01:59:19
  • 浅谈Python中的正则表达式

    2023-11-02 12:48:18
  • asp之家 网络编程 m.aspxhome.com