正则表达式作用
正则表达式是将复杂的字符串进行信息过滤,找到我们想到的信息,同时计算机的高效率运行能够减轻我们的手工操作负担提高准确度。
正则表达式是一个特殊的字符序列,能帮助我们方便的检查一个字符串是否与某种模式匹配。
Python自1.5版本起增加了re 模块,提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
re.match
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
匹配单个字符
字符 | 功能 |
---|---|
. | 匹配任意1个字符(除了\n) |
[ ] | 匹配[ ]中列举的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即 空格,tab键 |
\S | 匹配非空白 |
\w | 匹配单词字符,即a-z、A-Z、0-9、_ |
\W | 匹配非单词字符 |
"."匹配任意字符(除/n)
# -*- coding: utf-8 -*-
# @Time : 2019/10/4 13:32
# @Author : 币行者
# @Email : xypip@qq.com
# @File : test4.py
import re
ret = re.match(".", "x")
print(ret.group())
ret = re.match("xing..e", "xingzhe")
print(ret.group())
匹配[ ]中列举的字符
ret = re.match("[hH]ello", "hello XingZhe")
print(ret.group())
ret = re.match("[hH]ello", "Hello XingZhe")
print(ret.group())
匹配数字
ret = re.match("行者有\d个比特币", "行者有1个比特币,富的一匹")
print(ret.group())
ret = re.match("行者有\d个比特币", "行者有2个比特币,富的一匹")
print(ret.group())
ret = re.match("行者有\d个比特币", "行者有3个比特币,富的一匹")
print(ret.group())
匹配空白
ret = re.match("hello\sworld", "hello world!")
匹配多个字符
字符 | 功能 |
---|---|
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少有1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
ret = re.match("[A-Z][a-z]*","Ab")
print(ret.group())
ret = re.match("[A-Z][a-z]*","Ab")
print(ret.group())
ret = re.match("[A-Z][a-z]*","AbcdEF")
print(ret.group())
import re
names = ["name1", "_name", "2_name", "__name__"]
for name in names:
ret = re.match("[a-zA-Z_]+[\w]*",name)
if ret:
print("变量名 %s 符合要求" % ret.group())
else:
print("变量名 %s 非法" % name)
ret = re.match("[1-9]?[0-9]","7")
print(ret.group())
ret = re.match("[1-9]?\d","33")
print(ret.group())
ret = re.match("[a-zA-Z0-9_]{6}","1234abcd")
print(ret.group())
ret = re.match("[a-zA-Z0-9_]{8,20}","12345abcdefghij")
print(ret.group())