python中的正则表达式

一. 正则表达式

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。


1. 基本模式

.: 匹配任何字符

\w:匹配字母, 数字或者下划线

\W: 匹配非字母,数字,下划线


\s: 匹配空格,如\n, \t,\r

\S: 匹配非空格字符


\d: 匹配数字

\D: 除却数字之外的


^: 开头

$: 结尾

\: 转义字符

2. 次数的匹配

*: 匹配前一个字符出现0次或多次, 即可有可无

+: 匹配前一个字符出现1次或多次,即至少出现一次

?: 匹配前一个字符出现1次或0次,即前面的字符可省略

{n}: 匹配前一个字符出现n次

{n,}: 匹配前一个字符至少出现n次

{m,n}: 匹配前一个字符出现m次到n次


eg1:匹配电话号码


eg:匹配字符串

要求:字符串第一个字母为大写字母, 后面都是小写字母,且小写字母可有可无

注:中括号用于指向一个字符集合,[A-Z],[a-z],[0-9],[0-9a-zA-Z]

eg3:匹配aa邮箱

要求:邮箱地址以@qq.com结尾;@qq.com前面的内容由字母,数字或者下划线组成,大于4小于15位;符合要求的存储到/tmp/mail.txt文件中


3. 表示分组

| : 匹配 | 左右任意一个表达式即可

eg:匹配0-100之间的数值,包含0和100


(ab): 将括号中的字符作为一个分组

注:groups以元组方式返回符合条件的分组

\num: 引用分组第num个匹配到的字符串


(?P): 分组起别名

(?P=name) : 引用分组的别名


???

二. re模块高级用法

search()方法: 只找到符和条件的第一个并返回


findall()方法: 返回符合条件的所有内容


sub()方法: 对符合正则的内容进行替换

eg1:

eg2:


split()方法: 指定多个分隔符进行分割


三. python的贪婪匹配和非贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符

非贪婪匹配 总是匹配尽可能少的字符

*, ?,+, {m,n}后面加上?, 使得贪婪模式变成非贪婪模式


四. JSON(javascript object)


eg:获取输入IP的所在地理位置


展开阅读全文

没有更多推荐了,返回首页