本节介绍在python中,如何使用正则表达式(regex)匹配单个字符
字符 | 功能 |
. | 匹配任意1个字符(除\n) |
[ ] | 匹配[ ]中举例的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即空格,tab键 |
\S | 匹配非空白 |
\w | 匹配单词字符,即a-z、A-Z、0-9、_ |
\W | 匹配非单词字符 |
首先,re.match()方法,是从左到右匹配的,只要从左到右符合即可
我们先练习\d,它表示代替任意一个数字,例如
import re
def main():
pattern = r"52的小窝v\d"
result1 = re.match(pattern, "52的小窝v11")
result2 = re.match(pattern, "52的小窝v2")
if result1:
print(result1.group())
if result2:
print(result2.group())
if __name__ == "__main__":
main()
程序执行结果:
- 52的小窝v1
- 52的小窝v2
\d的范围可能太广,我们可以使用[ ]指定一些值,比如下面这个例子,只会匹配[ ]中的数值,指定了1或者2
re.match(r"52的小窝v[12]", "52的小窝v6")
对于连续多个数值,可以使用-表示,例如1-46-8表示1到4且6到8。中括号中不仅可以匹配数字,也可以匹配字母,例如[0-9a-zA-Z]表示所有的数字,字母。
对于字母,数字,下划线,可以使用\w快速匹配。
re.match(r"52的小窝\w", "52的小窝_")
但是谨慎使用\w,它匹配的字母,其实是utf8字母,包括中文等
如果你需要判断空格,或者tab可以使用\s。当然也说明\s用的比较少
此外,d与D正好相反,包括s与S,w与W。而.表示任意一个字符,除了\n。