简介
正则表达式(Regular expression),通常缩写为regex,是一种字符串匹配的文本模式,它包括一些普通字符(从a-z之间的字母)还有特殊字符(又被称之为元字符)正则表达式也使用单个字符串来描述,匹配一系列匹配某个句法规则的字符串。
目前,许多编程语言都有支持正则表达式,而在python中,正则表达式是通过re模块来实现的。
举个例子:
-
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
-
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
-
colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)
一些比较常见的特殊符号和用法:
特殊字符:又称之为元字符,含有特殊含义,如果需要匹配这些特殊字符。,就要对字符进行转义,就是将\反斜杠字符放在他们前面。
限定符:是用来指定正则表达式的一个组件需要出现多少次才能满足匹配,一共有:*,+,?或者{n},{n,}或者{n,m}一共六种,而正则表达式的限定符有:
由于.*+这些限定符都比较贪婪,他们会尽可能多的匹配,所以有时剧情需要,我们需要关掉非贪婪模式
假如为了匹配以下的html文档中的章节标题
<h1>我是谁我在哪</h1>
c
//在贪婪模式下匹配:
/<.*>/
这样的情况就自动匹配了从<h1>开头到<\h1>结尾的所有内容,而如果我们只是需要将标签<h1>匹配,就需要启动非贪婪模式,而加上?就代表启动了非贪婪模式,比如
/<.*?>/ 匹配了开始和结尾的<h1>
/<\w+?>/ 只匹配开始的<h1>标签
定位符:将正则表达式固定到开始或者结尾
运算优先级:从高到低