记录一下python正则表达式过滤方式

caroline   ·   发表于 2021-12-01 18:28:27   ·   闲聊灌水区

以下为菜鸟教程的内容,仅作为笔记放在这里,待后续优化提取
1.过滤关键词(正则表达式是通过ASCII编码来实现的):
只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度,我们就可以使用以下正则表达式来设定:
^[a-zA-Z0-9_-]{4,10}$
^表示开始的位置,$表示结束的位置,
2.使用到的函数:
re.search和re.match:
re.match(pattern, string, flags=0)尝试从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,否则返回None。其中,第一个参数是正则表达式,第2个参数是要匹配的字符串,第3个参数是标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。该函数只匹配开始,如果开始不符合则直接返回none。
re.search(pattern, string, flags=0)扫描整个字符串,并返回第一个匹配的值。可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

Python 的re模块提供了re.sub用于替换字符串中的匹配项。
语法:re.sub(pattern, repl, string, count=0, flags=0)
参数:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
flags : 编译时用的匹配模式,数字形式。
前三个为必选参数,后两个为可选参数。
findall匹配所有,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
语法格式:re.findall(pattern, string, flags=0)或pattern.findall(string[, pos[, endpos]])
参数:
pattern 匹配模式。
string 待匹配的字符串。
pos 可选参数,指定字符串的起始位置,默认为 0。
endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。
修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
3.常用的方式:
字符匹配:Python 表示匹配“Python”字符。
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9]’。
\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9
]’。

总结:python的re.match函数与PHP的preg_match函数有些类似,re.search函数与PHP的preg_match_all函数类似。而re.sub函数与PHP的preg_replace函数比较类似。

4.实例:
正则表达式实例
字符匹配
实例 描述
python 匹配 “python”.
字符类
实例 描述
python 匹配 “Python” 或 “python”
rub[ye] 匹配 “ruby” 或 “rube”
[aeiou] 匹配中括号内的任意一个字母
[0-9] 匹配任何数字。类似于 [0123456789]
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[a-zA-Z0-9] 匹配任何字母及数字
[^aeiou] 除了aeiou字母以外的所有字符
[^0-9] 匹配除了数字外的字符
特殊字符类
实例 描述
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9]’。
\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9
]’。

打赏我,让我更有动力~

0 条回复   |  直到 2021-12-1 | 833 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.