正则表达式

什么是正则表达式

正则表达式,主要是通过定义正确的规则从目标字符串中匹配符合规则的数据,python语言支持正则操作,正则表达式是一种独立的技术,并不是某种编程语言所独有的
正则表达式,是一种特殊的符号,这样的符号是需要解释才能使用的,也就是需要正则表达式引擎来进行解释,目前正则表达式的引擎主要分三种:DFA,NFA、POSIX NF

正则表达式的语法

python中re模块,主要用来进行正则表达式的操作
1)定义正则表达式【普通字符串】
2)从目标字符串中提取数据【正则规则】

正则规则:语法
1)普通字符:也是正则表达式的一种字符,匹配当前字符本身
2)^:表示匹配字符串的开头位置

3)$:表示匹配字符串结束的位置

  1. .:表示匹配任意一个字符[换行、制表符..除外..]

  2. *:表示匹配任意一个字符出现了0次~n次

  3. +:表示匹配任意一个字符出现1次~n次

  4. ?:表示匹配一个字符出现了0次~1次

  5. {m}:表示匹配一个字符出现了m次
    {m,n}:表示匹配一个字符至少出现m次最多出现n次
    {m,}:表示匹配任意一个字符至少出现m次
    {,n}:表示匹配任意一个字符最多出现n次

  6. [0-120]:表示匹配0~1 或者2 或者0--不能操作数字范围,如果要判断数字范围请使用比较运算符

  7. ()表示分组,将一组数据单独区分出来
    (abc):表示匹配abc字符,并且单独存放为一组

为了更加方便的操作正则表达式,出现了一些特殊符号,用于简化正则表达式的操作

  1. \d: 和0-9相同的意义,匹配任意一个数字
    \D: 和[^0-9]相同的意义,匹配任意一个非数字

  2. \s: 匹配任意一个空白字符
    \S: 匹配任意一个非空白字符

  3. \b: 匹配任意一个单词边界

  4. \w: 匹配任意一个数字、字母或者下划线,和[a-zA-Z0-9_]相同的意义

  5. \:转义字符
    . -> 匹配-> . 匹配一个普通的字符.

正则表达式的贪婪模式和懒惰模式

贪婪模式:正则表达式匹配的一种模式,速度快,但是匹配的内容会从字符串两头向中间搜索匹配(比较贪婪~),一旦匹配选中,就不继续向字符串中间搜索了 ,匹配到正则中需要的结果,不再继续匹配,直接返回匹配结果
但是贪婪模式某些情况下,不是我们想要的,所以出现了另一种模式:懒惰模式
懒惰模式:正则表达式匹配的另一种模式,会首先搜索匹配正则表达式开始位置的字符,然后逐步向字符串的结束位置查找,一旦找到匹配的就返回,然后接着查找

贪婪模式:从目标字符串的两头开始搜索,一次尽可能多的匹配符合条件的字符串,但是有可能会匹配到不需要的内容,正则表达式中的元字符、量词、范围等都模式是贪婪匹配模式,使用的时候一定要注意分析结果

懒惰模式:从目标字符串按照顺序从头到位进行检索匹配,尽可能的检索到最小范围的匹配结果,语法结构是在贪婪模式的表达式后面加上一个符号?即可

你可能感兴趣的:(正则表达式)