1、如下图是python中的re模块的讲解,已经正则表达式的基础知识
2、python 正则表达式训练题(网上找的,最后附上了地址)
1. \d,\W,\s,\B,.,*,+,?分别是什么?
\d:数字
\W:非英文数字下划线的任意字符
\s:任意空白字符
\B:非单词开始或结尾的位置
.表示非换行符的任意字符
*表示匹配前面子表达式0次或多次
+表示匹配前面子表达式1次或多次
?表示匹配前面子表达式0次或1次
2. (?=a),(?<!a),(?<=a),(?!a)分别是什么?
(?=a)表示匹配a前面的字符
(?<!a)表示匹配前面不是a的字符
(?<=a)表示匹配a后面的字符
(?!a)表示匹配后面不是a的字符
3. 什么是贪婪匹配和懒惰匹配?
贪婪匹配:表示尽可能多的匹配,常见写法是.*
懒惰匹配:也叫非贪婪匹配,表示尽可能少的匹配,常见写法是.*?
4. \d{1,2}*这样的写法对吗?请说明理由。
不正确,这是因为所有限定类元字符后只能紧跟?这个限定类元字符,如果紧跟其他限定类元字符则会报错。正确的写法是(\d{1,2})*
5. 怎么让正则表达式从字符串的右边开始匹配?
使用KaTeX parse error: Undefined control sequence: \d at position 14: 则表示从右边开始匹配,比如\̲d̲{2}表示从右开始匹配两个数字
6. 写出验证用户名的正则表达式,用户名只能输入英文、数字和下划线。
^\w+$
7. 写出验证用户名的正则表达式,用户名只能输入汉字、英文、数字和下划线。
^[\w\u4e00-\u9fa5]+$
8. 验证用户密码,长度在6~18 之间,只能包含英文和数字。
^[A-Za-z0-9]{6,8} $
9. 验证用户密码强度,最少6位,至少包括1个大写字母、1个小写字母、1个数字和1个特殊字符。
^(?=.\d)(?=.[A-Z]) (?=.[a-z]) (?=.[!@%^*?~])[\u4E00-\u9FA5A-Za-z0-9!@%^*?~]{6,16}$
10. 匹配QQ号。
^[1-9]\d{4,12}$
11. 匹配Email地址。
([\w-]+(.[\w-]+)*@[\w-]+(.[\w-]+)+)
12. 匹配手机号。
^1[3-9]\d{9}$
13. 匹配固定电话号码。
^((0\d{2,3})|0\d{2,3})-?\d{7,8}(-\d{1,6})?$
14. 用正则表达式分别提取固定电话号码中的区号和电话号。
(?<=()\d{3,4}(?=)-?\d{7,8}(-\d{1,6})?KaTeX parse error: Undefined control sequence: \d at position 4: )|^\̲d̲{3,4}(?=\-?\d{7…)
(?<=^\d{3,4}-?)\d{7,8}(?=(\d{1,6})?KaTeX parse error: Got function '\-?)\d…)
(?<=^\d{3,4}-?\d{7,8}-)\d{1,6}KaTeX parse error: Got function '-?\d{7…
15. 匹配身份证号码。
^\d{18}|\d{17}[Xx]$
16. 匹配出身份证号码中的区域代码。
(?<=^)\d{6}(?=\d{12}KaTeX parse error: Undefined control sequence: \d at position 9: )|(?<=^)\̲d̲{6}(?=\d{11}[Xx…)
17. 用正则表达式匹配出身份证号中的出生日期。
(?<=^\d{6})\d{8}(?=\d{4}KaTeX parse error: Undefined control sequence: \d at position 8: )|(?<=^\̲d̲{6})\d{8}(?=\d{…)
18. 匹配银行卡号。
^[1-9]\d{12,18}$
19. 匹配邮政编码。
^\d{6}$
20. 匹配包含送货地址的字符串。
^[\s\S]送货地址[\s\S]$
21. 匹配车牌号。
^(京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新|[1-3]\d{5}使|(WJ)[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新]?((?=[A-Z])(?!I|O).|[0-9]){5}|((?=[A-Z])(?!I).){2}[0-9]{5})$
22. 匹配整数。
^-?\d+$
23. 匹配非零的负整数。
^\-(?!0)\d+$
24. 匹配非零的正整数。
^(?!0)\d+$
25. 匹配浮点数。
^(-?\d*.?\d*([eE][-+]?\d+)?|0)$
26. 匹配非负浮点数。
^(\d*.?\d*([eE][-+]?\d+)?|0)$
28. 匹配以下HTML中的URL:
<link rel=“search” href=“https://www.baidu.com” />
(?<=href=\s?“).*?(?=”\s?/>)
29. 匹配HTML标记。
<.*?>
30. 匹配<a <123> <456> a>中的数字。
(?<=<)\d+(?=>)
31. 匹配<a <123 <456> a>中的数字。
(?<=<)\d+(?=>)?
32. 匹配以.com结尾的web域名。
^(?=^.{4,255}$)[a-zA-Z0-9][a-zA-Z0-9-]{0,62}(.[a-zA-Z0-9][a-zA-Z0-9-]{0,62})*.com$
33. 匹配IP地址。
^(2([0-4]\d|5[0-5])|1\d{2}|[1-9]\d|[1-9])(.(2([0-4]\d|5[0-5])|1\d{2}|[1-9]?\d)){3}$
34. 匹配MAC地址。
^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-z]{2}$
35. 匹配文件名的后缀(注意文件名中可能出现.号)
((?!.).)*?$
36. 匹配文件名(注意文件名中可能出现.号)。
^.*(?=.)
37. 匹配汉字。
[\u4e00-\u9fa5]
38. 匹配AABB型成语。
^([\u4e00-\u9fa5])\1((?=[\u4e00-\u9fa5])(?!\1).)\2$
39. 匹配ABAB型成语。
^([\u4e00-\u9fa5])((?=[\u4e00-\u9fa5])(?!\1).)\1\2$
40. 匹配yyyy-mm-dd格式的日期。
^(\d{4}(?!0{4})-((0[13578]|1[02])-31|(01|0[3-9]|1[0-2])-(29|30)|(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8]))|((\d{2}(0[48]|[13579][26]|[2468][048])|(0[48]|[13579][26]|[2468][048])00)-02-29))$
41. 使用正则表达式让2020-05-20 变成 2020.05.20
42. 使用正则表达式给数字加上千分符。
(?=\B(\d{3})+(?=.))
43. 去除字符串中的中文。
[\x{4e00)-\x({9fa5)]
44. 去除字符串中的特殊字符。
[^A-Za-z0-9\x{4e00)-\x({9fa5)]
45. 去除字符串中的空白字符。
\s
46. 匹配第一个连续出现的字符。
(.+)1
————————————————
原文链接:https://blog.csdn.net/a34921324/article/details/127379809