python正则表达式整理
正则表达式在处理字符串时很大的作用,爬虫中也经常用到,下面就将一些常用正则表达式做一整理记录,方便以后查看。
^ 匹配字符串开始,如^d表示以d开头的字符串
. 表示匹配任意字符串
* 表示前面的字符串可以重复多遍
$ 表示结尾字符串,比如以3结尾的字符串可以表示为:3$
? 表示非贪婪模式,正则表达式默认为贪婪模式,贪婪模式下是反向匹配,即从后向前匹配。非贪婪模式正好相反
+ 限制字符出现次数,至少出现一次
{} 限制字符出现次数
{1} 字符出现一次 {2}出现两次 以此类推
{1,}字符至少出现一次。其他相同格式,以此类推
{1,3}字符至少出现一次,做多出现3次 。其他相同格式以此类推
| 表示为 或 的意思
() 表示匹配模式,只匹配()里面,匹配时从最外层()开始
\s 匹配空格 \s+ 匹配多个空格
\S 匹配除空格以外的任意字符 \S+ 表示匹配多个非空字符
\w 匹配a-z A-Z 0-9以及下划线中的任意字符
\W 匹配出a-z A-Z 0-9以及下划线以外的任意字符
[] 匹配括号中出现的任意字符
[1357] 表示可以匹配1,3,5,7中任意一个字符
[^] 表示取反,非 [^1]表示可以匹配除1以外的任意字符
[A-Za-z0-9] 表范围,[A-Z]表示可以取A-Z中的任意一个字符 (1[34578][0-9]{9}) 表示字符串以1开头,
第二个字符为3,4,5,7,8中任意一个字符,[0-9]表示0-9中任意一个数字,{9}表示重复[0-9]9次
[\u4E00-\u9FA5] 匹配汉字。默认匹配一个汉字
[\u4E00-\u9FA5] + 可匹配多个汉字
\d 匹配数字 \d+ 代表匹配连续的数字 \d{4}代表匹配四位数字
\b 匹配单词边界
正则表达式应用:
正则表达式常用于文本信息提取及用户输入信息校验等地方,下面的列子用于验证用户输入的用户名和qq号是否有效。
1 import re 2 3 """ 4 正则表达式 5 验证输入用户名和QQ号是否有效并给出对应的提示信息 6 7 要求:用户名必须由字母、数字或下划线构成且长度在6~20个字符之间,QQ号是5~12的数字且首位不能为0 8 9 """ 10 def qq_verify(): 11 username =input("请输入用户名: ") 12 qq = input("请输入qq号: ") 13 u1 = re.match(r'^[0-9a-zA-Z\u4E00-\u9FA5]{6,20}$',username) #\ u4E00-\u9FA5匹配汉字 14 if not u1: 15 print('请输入有效的用户名') 16 q1 = re.match(r'^[1-9]\d{4,11}$',qq) 17 if not q1: 18 print('请输入有效的qq号') 19 if u1 and q1: 20 print('信息有效') 21 if __name__ == '__main__': 22 23 qq_verify()
以上为常见正则表达式整理,不全的地方后面会继续追加。