Python正则表达式基础

正则表达式作用

正则表达式是将复杂的字符串进行信息过滤,找到我们想到的信息,同时计算机的高效率运行能够减轻我们的手工操作负担提高准确度。
正则表达式是一个特殊的字符序列,能帮助我们方便的检查一个字符串是否与某种模式匹配。
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())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容