半小时速通正则表达式
正则表达式在文本范式处理时有者非常重要的应用,快来一起巩固一下正则的相关知识吧! ### 正则表达式应用场景(Regular Expression)
- 数据验证(表单验证、如手机、邮箱、IP地址)
- 爬虫功能
- 数据检索(数据检索、数据抓取)
- 数据隐藏(135****6235王先生)
- 数据过滤(论坛敏感关键词过滤)
正则--match
re.match(pattern, string, flags=0)
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志 |
re.match 尝试从字符串的起始位置匹配一个模式, 匹配成功 re.match 方法返回一个匹配的对象,否则返回 None。
正则--search
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