半小时速通正则表达式

正则表达式在文本范式处理时有者非常重要的应用,快来一起巩固一下正则的相关知识吧! ### 正则表达式应用场景(Regular Expression)

  • 数据验证(表单验证、如手机、邮箱、IP地址)
  • 爬虫功能
  • 数据检索(数据检索、数据抓取)
  • 数据隐藏(135****6235王先生)
  • 数据过滤(论坛敏感关键词过滤)

正则--match

re.match(pattern, string, flags=0)

参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

re.match 尝试从字符串的起始位置匹配一个模式, 匹配成功 re.match 方法返回一个匹配的对象,否则返回 None。

re.search(pattern, string, flags=0)

参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

re.match 尝试从字符串的任意位置匹配一个模式,(常用于全词匹配) 匹配成功 re.search 方法返回一个匹配的对象,否则返回 None。

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

re.compile(正则表达式).sub(用来替换的内容,要被替换的内容)

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。 ### ### re.sub(正则,替换字符,被替换的内容)

正则常用符号释义

符号 解释 示例 说明
. 匹配任意字符 b.t 可以匹配bat / but / b#t / b1t等
匹配字母/数字/下划线/汉字 b 可以匹配bat / b1t / b_t等<br>但不能匹配b#t
**匹配空白字符(包括、*) love 可以匹配love you
[(file://d) 匹配数字 [(file://d/d) 可以匹配01 / 23 / 99等
[(file://b) 匹配单词的边界 [(file://bThe/b)
^ 匹配字符串的开始 ^The 可以匹配The开头的字符串
$ 匹配字符串的结束 .exe$ 可以匹配.exe结尾的字符串
匹配非字母/数字/下划线 b 可以匹配b#t / b@t等<br>但不能匹配but / b1t / b_t等
匹配非空白字符 love 可以匹配love#you等<br>但不能匹配love you
匹配非数字 可以匹配9a / 3# / 0F等
匹配非单词边界
[] 匹配来自字符集的任意单一字符 [aeiou] 可以匹配任一元音字母字符
[^] 匹配不在字符集中的任意单一字符 [^aeiou] 可以匹配任一非元音字母字符
* 匹配0次或多次 *
+ 匹配1次或多次 +
? 匹配0次或1次 ?
{N} 匹配N次
{M,} 匹配至少M次
{M,N} 匹配至少M次至多N次
\ 分支 foo\bar 可以匹配foo或者bar
(?#) 注释
(exp) 匹配exp并捕获到自动命名的组中
(?<name>exp) 匹配exp并捕获到名为name的组中
(?:exp) 匹配exp但是不捕获匹配的文本
(?=exp) 匹配exp前面的位置 +(?=ing) 可以匹配I'm dancing中的danc
(?<=exp) 匹配exp后面的位置 [(?<=)+(file://bdanc)/w+/b) 可以匹配I love dancing and reading中的第一个ing
(?!exp) 匹配后面不是exp的位置
(?<!exp) 匹配前面不是exp的位置
*? 重复任意次,但尽可能少重复 a.\b<br>a.\?b 将正则表达式应用于aabab,前者会匹配整个字符串aabab,后者会匹配aab和ab两个字符串
+? 重复1次或多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{M,N}? 重复M到N次,但尽可能少重复
{M,}? 重复M次以上,但尽可能少重复

说明:如果需要匹配的字符是正则表达式中的特殊字符,那么可以使用\进行转义处理,例如想匹配小数点可以写成\.就可以了,因为直接写.会匹配任意字符;同理,想匹配圆括号必须写成\(和\),否则圆括号被视为正则表达式中的分组。


半小时速通正则表达式
https://linxkon.github.io/半小时速通正则表达式.html
作者
linxkon
发布于
2021年5月10日
许可协议