设为首页收藏本站
查看: 58|回复: 0

[PHP] Python正则表达式:基础篇

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-14 02:44:00 | 显示全部楼层 |阅读模式
    前言
    之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考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')  >>> re.search(r'\bhello\b', 'hello world')  >>> re.search(r'\bhello\b', 'hello,world')  >>> re.search(r'\bhello\b', 'hello_world') >>>
    其实这里,\b大体上和\W一支,但是\b可以匹配行首行尾等非显示类的字符,而\W不可以。
    \:
    >>> re.search(r'\$100', '$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')  >>> re.search('\bhello\b', 'hello') >>> re.search('\\bhello\\b', 'hello')  >>> re.search('\\\\hello\\\\', '\\hello\\')  >>> re.search(r'\\hello\\', '\\hello\\')  >>> print('\\hello\\') \hello\
    更多Python正则表达式:基础篇相关文章请关注PHP中文网!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表