正则表达式入门
正则表达式?
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
精确匹配
\d
匹配一个数字字符\D
匹配一个非数字字符\w
匹配包括下划线的任何单词字符\W
匹配任何非单词字符\s
匹配任何空白字符\S
匹配任何非空白字符\n
匹配一个换行符\r
匹配一个回车符.
匹配除了\n的任何字符
变长
匹配多个字符
- *表示任意个字符(包括0)
- +表示至少一个字符
- ?表示0或者1个字符
- {n}表示n个字符
- {n,m}表示n-m个字符
更精确的匹配
用[]表示范围
- [0-9a-zA-z_]可以匹配一个数字、字母或者下划线
- [0-9a-zA-z_]+可以匹配至少由一个个数字、字母或者下划线组成的字符串
A|B可以匹配A或者B
^表示开头
$表示结尾
贪婪匹配
Python的re模块和JS的正则匹配默认是贪婪匹配,尽可能多的匹配字符,如
print(re.match(r'^(\d+)(0*)$','12340000').groups())
>>> ('12340000', '')
加个?使用非贪婪匹配
print(re.match(r'^(\d+?)(0*)$','12340000').groups())
>>> ('1234', '0000')