zoukankan      html  css  js  c++  java
  • 正则-简单的模式

    我们将从最简单的正则表达式开始,由于正则表达式常用于操作字符串的,因此我们从最常见的任务下手:字符匹配

    字符匹配

    大多数字母和字符会匹配它们自身。

    举个例子:正则表达式FishC将完全匹配字符串‘FishC’。

    (你可以启用不区分大小写模式,则正则表达式FishC可以匹配‘FISHC’,或‘fishc’)

    当然这个规则也有例外。

    有少数特殊的字符我们称之为‘元字符’(metacharacter),它们并不能匹配自身,它们定义了字符类,子组匹配和模式重复次数等。

    本文用很大的篇幅讨论了各种元字符及其作用。

    下面是元字符的完整列表

    . ^ $* + ? {} | ()

    注释:如果没有这些元字符,正则表达式就会变得跟字符串的find()方法一样平庸了。

    1、方括号

    我们先来看一下方括号[],它们指定一个字符类用于存放你需要匹配的字符集合。

    可以单独列出需要匹配的字符,也可以通过两个字符和一个横杆指定匹配的范围。

    例如:[abc]会匹配字符a,或b,或c;[a-c]可以实现相同功能。后者使用范围来表示与前者相同的字符集合。

    如果你想只匹配小写字母,你的RE可以写成[a-z]。

    需要注意的一点是:元字符在括号中不会触发‘特殊功能’,在字符类中,它们只匹配本身。

    例如:[akm$]会匹配'a','k','m',或'$',$是一个元字符,但是在方括号中它不代表特殊含义,它只匹配$字符本身。

    2 、^

    你还可以匹配方括号中位列出的其他所有字符。做法是在类的开头添加一个脱字字符^,

    例如:[^5]会匹配除了‘5’之外的任何字符。

    3、反斜杠

    或许最终要的元字符当属反斜杠了‘’,跟python的字符串规则一样,如果在反斜杠后面紧跟着一个元字符,那么元字符的‘特殊功能’也不会触发。

    例如:你需要匹配[ 或 , 你可以在前加反斜杠以消除他们的特殊功能: [ , \。

    反斜杠后面跟一些字符还可以表示特殊的意义,例如表示十进制的数字,表示所有的字母或者表示所有的非空白的字符集合。

    注释:反斜杠很牛逼,后面加元字符则去除其特殊功能,后面加普通字符则实现特殊功能。

    例如:w 匹配任何单词字符。

    如果正则表达式以字节的形式表示,这相当于[a-zA-Z0-9]

    如果正则表达式表示的是一个字符串,w 会匹配所有的unicode数据库

    你可以在编译正则表达式的时候,通过提供re.ASCII表示进一步限制 w 的定义。

    注释:re.ASCII标志使得w 只能匹配ASCII字符,不要忘了python是unicode的。

    它们可以包含在一个字符类中,并且一样拥有特殊含义。

    例如:[s,.]是一个字符类,它将匹配任何空白字符,','或'.'

    4、' . '

    最后我们讲的一个元字符是 '.' ,它匹配除了换行符以外的任何字符。

    如果设置了re.DOTALL标志,.将匹配包括换行符在内的任何字符。

  • 相关阅读:
    CF432D Prefixes and Suffixes
    CF126B Password
    如何实现输入历史记录功能
    python工作中总结
    今 天看到我十年前的一篇技术文章,想到不知不觉学编程十多年了,,
    现在互联网好多bug 想到都烦
    【图论】割点
    【DP】【P1941】【NOIP2014D1T3】飞扬的小鸟
    【线段树】【P3740】 [HAOI2014]贴海报
    【单调队列】【P1714】 切蛋糕
  • 原文地址:https://www.cnblogs.com/themost/p/6686775.html
Copyright © 2011-2022 走看看