Python3正则表达式(一)基本语法规则

坚强的狗蛋 2017-12-18 23:43:27

8341

收藏 27分类专栏: python3正则表达式 文章标签: python 正则表达式 re模块版权正则表达式是一个很强大的字符串处理工具,它能帮助我们方便的检查一个字符串是否与某种模式匹配。一、python中正则表达式的基本语法规则序号语法解释表达式成功匹配对象1一般字符匹配自身相对应的字符abcabc2.匹配除换行符(\n)以外的任意字符a.cabc3\转义字符,可以改变原字符的意思a.ca.c4\d匹配数字:0~9\dabc1abc5\w匹配单词字符,a~z;A~Z;0~9\w\w\woX26\s匹配空格字符(\t,\n,\r,\f,\v)a\sca c7\D匹配非数字字符\Dabcaabc8\W匹配非单词字符a\Wca c9\S匹配非空格字符\S\Sc1bc10[]字符集,对应位置上可以是字符集里的任意字符a[def]caec11[^]对字符集当中的内容进行取反a[^def]ca2c12[a-z]指定一个范围字符集a[A-Z]caBc13*允许前一个字符可以出现0次或者无限次a*baaab或b14+前一个字符至少出现1次a+baaab或ab15?前一个字符只能出现一次或者不出现a?bab或b16{m}允许前一个字符只能出现m次a{3}baaab17{m,n}允许前一个字符至少出现m次,最多出现n次(如果不写n,则代表至少出现m次)a{3,5}b和a{3,}aaaab和aaaaaab18^匹配字符串的开始,多行内容时匹配每一行的开始^abcabc19$匹配字符串的结尾,多行内容时匹配每一行的结尾abc&abc20\A匹配字符串开始位置,忽略多行模式\Aabcabc21\Z匹配字符串结束位置,忽略多行模式abc\Zabc22\b匹配位于单词开始或结束位置的空字符串hello \bworldhello world23\B匹配不位于单词开始或结束位置的空字符串he\Bllohello24|表示左右表达式任意满足一种即可abc|cbaabc或cba25(…)将被括起来的表达式作为一个分组,可以使用索引单独取出(abc)dabcd26(?P<name>…)为该分组起一个名字,可以用索引或名字去除该分组(?P<id>abc)dabcd27\number引用索引为number中的内容(abc)d\1abcdabc28(?P=name)引用该name分组中的内容(?P<id>abc)d(?P=id)abcdabc29(?:…)分组的不捕获模式,计算索引时会跳过这个分组(?:a)b(c)d\1abcdc30(?iLmsux)分组中可以设置模式,iLmsux之中的每个字符代表一个模式,单独介绍(?i)abcAbc31(?#…)注释,#后面的内容会被忽略ab(?#注释)123ab12332(?=…)顺序肯定环视,表示所在位置右侧能够匹配括号内正则a(?=\d)a1最后的结果得到a33(?!…)顺序否定环视,表示所在位置右侧不能匹配括号内正则a(?!\w)a c最后的结果得到a34(?<=…)逆序肯定环视,表示所在位置左侧能够匹配括号内正则1(?<=\w)a1a35(?<!…)逆序否定环视,表示所在位置左侧不能匹配括号内正则1 (?<!\w)a1 a36(?(id/name)yes|no)如果前面的索引为id或者名字为name的分组匹配成功则匹配yes区域的表达式,否则匹配no区域的表达式,no可以省略(\d)(?(1)\d|a)32二、(?iLmsux)为分组设置模式这里的”i”, “L”, “m”, “s”, “u”, “x”,它们不匹配任何字串,而是表示对应python中re模块当中的(re.I, re.L, re.M, re.S, re.U, re.X)的6种选项。可以在python源码中看到:I = IGNORECASE # 忽略大小写L = LOCALE     # 字符集本地化,为了支持多语言版本的字符集使用环境U = UNICODE    # 使用\w,\W,\b,\B这些元字符时将按照UNICODE定义的属性M = MULTILINE  # 多行模式,改变 ^ 和 $ 的行为S = DOTALL     # '.' 的匹配不受限制,包括换行符X = VERBOSE    # 冗余模式,可以忽略正则表达式中的空白和#号的注释123456六种模式在正则表达式中可以同时使用多个的,在 python 里面使用按位或运算符 | 同时添加多个模式如:re.compile(”, re.I|re.M|re.S)三 、反斜杠的使用在一般的编程语言当中,反斜杠“\”代表反转义字符,在反斜杠后面加一个字符可以表示一种特定的意思,接下来列举几个常见的转义字符:序号转义字符解释1\f换页,将当前位置移到下页开头2\n换行,将当前位置移到下一行开头3\r回车,将当前位置移到本行开头4\t水平制表,跳到下一个TAB位置5\v垂直制表(暂时还没用过这个)6\\代表一个反斜杠字符 ‘\’因为在正则表达式的规则当中,‘\’就是转义字符的意思,前面基本语法规则里也有说到,但是在一般的变成语言中,’\’也有转义字符的意思,所以,如果我们要是写代码的时候用到正则表达式中的’\’的时候,就需要写四个’\’,才可以代表一个真正的反斜杠字符,如:“\\\\”。“\\\\”:这里的第一个和第三个是在编程语言中起转义的作用,结果:“\\”,然后在正则表达式中它在进行一次反转义就代表着一个真正的反斜杠字符了。但是在python语言中,我们可以不考虑这个问题。只需要在写好的字符串前面加一个’r’, 告诉编译器这个字符串是个原生字符串,不要转义’\’ 。例如,上个例子中的正则表达式可以使用r”\”表示。因为加上这个’r’,只是告诉python语言不转义这个字符串,但是在正则表达式中还是要符合正则表达式的规则。同样,匹配一个数字的”\d”就可以写成r”\d”。所以,在python中写正则表达式时,要养成一个前面写’r’的习惯。四、总结这些就是正则表达式的基本语法了,和学习编程一样,活学活用,不懂就查。接下来将写一下在python3中使用正则表达式即re模块的学习笔记。

(0)

相关推荐

  • 第63天:正则表达式

    正则表达式是一个特殊的字符串序列.一种模式,用来判断字符串是否符合这种模式,如:判断邮件地址是否有 @ 符号,判断手机号是否正确等待. 基本语法 在正则表达式中,可以使用 \d 匹配数字,\w 匹配数 ...

  • 小学英语中必背的名词单数变复数的语法规则,你都熟记了吗?

    英语中名词可分为可数名词和不可数名词.可数名词在应用时有单数和复数形式,表示一个用单数,表示两个或两个以上用复数.复数名词的构成分为规则变化和不规则变化.让我们来看看具体是怎么变化的吧! 名词单数变复 ...

  • 超全名词单数变复数的语法规则,你绝对会用得上!

    英语中名词可分为可数名词和不可数名词.可数名词在应用时有单数和复数形式,表示一个用单数,表示两个或两个以上用复数. 名词单数变复数的规则变化 1. 一般在名词词尾加'-s' map-maps地图 bi ...

  • SCL语言基本语法规则:表达式

    SCL:Structured Control Language,结构化控制语言. SCL是一种类似于计算机高级语言的编程方式,只是这种语言编写的程序,可以在PLC中运行.如果学过C语言或者VB语言,就 ...

  • 英语学习语法规则讲解

    没有任何语法规则有足够的权威来控制住对一种语言的使用方式是牢固不变的.口语和写作中的既定习惯,是我们在确定语言和风格的争议时,最后才会采用的标准.--雨果布莱 Lesson2.什么是真正的英语 2.1 ...

  • SCL语言基本语法规则:变量、地址、寻址

    使用SCL语言编程方法简介 SCL语言基本语法规则:表达式 第一个SCL程序 关于SCL编程今天跟大家聊点基础知识: 变量与常量 地址与符号 寻址方式 以上是PLC技术学习的基础知识,但凡懂一点PLC ...

  • 初中英语中必背的名词单数变复数的语法规则...

    初中英语中必背的名词单数变复数的语法规则...

  • 英语中要背的名词单数变复数的语法规则,你都熟记了吗?

    英语中名词可分为可数名词和不可数名词.可数名词在应用时有单数和复数形式,表示一个用单数,表示两个或两个以上用复数.复数名词的构成分为规则变化和不规则变化.让我们来看看具体是怎么变化的吧! 名词单数变复 ...

  • 小学英语名词单数变复数的语法规则,你都记住了吗?

    英语中名词可分为可数名词和不可数名词.可数名词在应用时有单数和复数形式,表示一个用单数,表示两个或两个以上用复数.复数名词的构成分为规则变化和不规则变化.让我们来看看具体是怎么变化的吧! 名词单数变复 ...

  • python3正则表达式的几个高级用法

    isscollege 2018-04-28 22:56:58 24189 收藏 42分类专栏: python 正则分组版权 教你用代码玩转PPT相信每个程序猿对写PPT感到困扰,没有灵感,憋得头痛,有 ...