正则表达式
1、正则表达式指令
\d:匹配任意一个数字字符,等价于[0-9]
\D:匹配任意一个非数字字符,等价于[^0-9]
\w:匹配任意一个字母、数字、或下划线字符,等价于[A-Za-z0-9_]
\W:匹配任意一个非字母、数字、或下划线字符,等价于[^A-Za-z0-9_]
\n:匹配一个换行符
\r:匹配一个回车符
\f:匹配一个换页符
\t:匹配一个制表符
\s:匹配所有空白字符:\n、\r、\f、\t
\S:匹配非空白字符
\b:匹配单词边界
\B:匹配非单词边界
^:匹配字符串开始的位置
$:匹配字符串结束的位置
.:匹配\n、\r之外的所有单个字符
[abc]:匹配列出的任意一个字符
[^abc]:匹配未列出的任意一个字符
[a-z]:匹配a-z指定范围内的任意一个字符
[^a-z]:匹配不在a-z指定范围内的任意一个字符
{n}:匹配确定的n次
{n,m}:匹配n-m次
{n,}:匹配至少n次
*:匹配0次或多次,等价于{0,}
+:匹配1次或多次,等价于{1,}
?:匹配0次或1次,等价于{0,1}
a|b:匹配a或b
(str):匹配并获取子字符串str
(?:str):匹配但不获取子字符串str
(?=str):正向肯定预查,匹配后接字符(非获取匹配)
(?!str):正向否定预查,匹配除了后接字符以外的字符(非获取匹配)
(?<=str):反向肯定预查,匹配前接字符(非获取匹配)
(?<!str):反向否定预查,匹配除了前接字符以外的字符(非获取匹配)
* 分组输出匹配结果:re.group() 输出全部分组;re.group(1) 输出第一组匹配结果。
* group组命名:(?P<组名>正则表达式) => re.group(组名)
* 寻找所有匹配结果:re.findall(r’正则表达式’,’文本’)
* 替换匹配结果:re.sub (r’正则表达式’,’替换内容’,’文本’)
* 利用匹配结果进行分割:re.split(r’正则表达式’,’文本’)。
* 例:re.split(r’[,;\. \\]’,’a,b;c. d\ e’) => [‘a’,‘b’,‘c’,‘d’,‘e’]
* 包装正则表达式:compile_re = re. compile() compile_re.findall(‘文本’)
2、常见正则表达式:
匹配数字
* 1、不固定位数的数字:^ \d* $
* 2、固定n位的数字:^ \d{n} $
* 3、至少n位的数字:^ \d{n,} $
* 4、n-m位的数字:^ \d{n,m} $
* 5、零开头的数字:^(0 [0-9]*)$
* 非零开头的数字:^([1-9] [0-9]*)$
* 6、非零开头的最多带两位小数的数字:^([1-9] [0-9]*)+ (\. [0-9]{1,2})? $
* 7、最多带2位小数的正数或负数:^(\-)? \d+ (\. \d{1,2})? $
* 8、正数、负数、和小数:^(\- | \+)? \d+ (\. \d+)? $
* 9、有两位小数的正实数:^[0-9]+ (\. [0-9]{2})? $
* 10、最多有3位小数的正实数:^[0-9]+ (\. [0-9]{1,3})? $
* 11、非零的正整数:^\+? [1-9] \d* $
* 12、非零的负整数:^\- [1-9] \d* $
* 13、非负整数:^\d+ $
* 14、非正整数:^\- [1-9]\d* | 0 $
* 15、浮点数:^(\-? \d+) (\. \d+)?$
匹配字符
* 1、汉字:^ [\u4e00 - \u9fa5]+ $
* 2、英文和数字:^ [A-Za-z0-9]+ $
* 3、长度为n-m的所有字符:^ .{n,m} $
* 3、字母组成的字符串:^ [A-Za-z]+ $
* 5、大写字母组成的字符串:^[A-Z]+$
* 6、小写字母组成的字符串:^[a-z]+$
* 7、由数字和字母组成的字符串:^[A-Za-z0-9]+$
* 8、由数字、字母或者下划线组成的字符串:^ \w+ $
* 9、中文、英文、数字包括下划线:^ [\u4E00-\u9FA5 A-Za-z 0-9 _]+ $
* 10、中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5 A-Za-z 0-9]+$
正则表达式
最新推荐文章于 2024-08-14 12:00:04 发布