Python基础-正则表达式

本文介绍正则表达式的常用语法及Python中的应用案例,包括匹配、切分字符串和分组等功能。

正则表达式

常用语法

  1. \d 可以匹配数字
  2. \w 可以匹配字母或者数字
  3. xx. 结语匹配带 xx 的字符串
  4. [*] 表示一个字符串
  5. [+]表示至少一个字符串
  6. ? 表示0个或者1个字符
  7. {n} 表示 n 个字符
  8. {n, m} 表示 (n,m)范围内个字符
  9. \s 表示可以匹配一个空格,包括Tba等空白符
  10. \s + 表示至少有一个空格
  11. A | B 表示 A或B
  12. ^ 表示行的开头
  13. ^\d 表示必须数字开头
  14. $ 表示行的结尾
  15. \d$ 表示必须数字结束
  16. 16.

实例

[\d{3}\s+\d{3,8}]

  1. \d 表示数字
  2. {3} 表示3个字符
  3. \s + 表示至少一个空格
  4. \d 表示数字
  5. {3,8} 表示3到8个数字
    上述即 前面3位要数字,至少一个空格,后面3-8个数字

例如 “123 123”, “123 1234”,“123 45623”

[0-9a-zA-Z_]

  1. 0-9 表示0-9内的字符
  2. a-z 表示小写字母
  3. A-Z 表示大写字母
  4. _ 表示下划线
    综合上述 可以匹配一个数字、字母或者下划线

[0-9a-zA-Z_] +

可以匹配至少由一个数字、字母或者下划线组成的字符串

[a-zA-Z_][0-9a-zA-Z_]

表示:[字母或者下划线][匹配至少由一个数字、字母或者下划线组成的字符串]

[a-zA-Z_][0-9a-zA-Z_]{0,19}

表示:[字母或者下划线][匹配至少由一个数字、字母或者下划线组成的字符串]{字符数量在0-19个内}

(P|p)ython

表示可以匹配 Python或者python

Python的正则表达式 - re模块

match 正则匹配

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块

import re

# 正则匹配
def test():

    result = re.match(r"\d", "Hello")
    # None 表示不匹配
    print(result)

    result = re.match(r"\d", "123")
    # 详细匹配信息 <_sre.SRE_Match object; span=(0, 1), match='1'>
    print(result)

test()

运行结果

D:\PythonProject\sustudy>python main.py
None
<_sre.SRE_Match object; span=(0, 1), match='1'>

split 切分字符串

运行示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块

import re

# 切分字符串
def test():

    # \s+ 表示至少一个字符
    result = re.split(r"\s+", "H  ell o")
    # ['H', 'ell', 'o']
    print(result)

    # [\s\,\;]+
    # [\字符\逗号\分号]至少
    result = re.split(r"[\s\,\;]+", "H,ell;o")
    # ['H', 'ell', 'o']
    print(result)

test()

运行结果

D:\PythonProject\sustudy>python main.py
['H', 'ell', 'o']
['H', 'ell', 'o']

group 分组

运行示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块

import re

# group
def test():

    # [(\d{3})-(\d{3,8})]
    # [(数字{3个})-(数字{3~8个内数字})]
    result = re.match(r"(\d{3})-(\d{3,8})", "010-123456")
    # <_sre.SRE_Match object; span=(0, 10), match='010-123456'>
    print(result)

    if result:
        # 010-123456
        print(result.group(0))
        # 010
        print(result.group(1))


test()

运行结果

D:\PythonProject\sustudy>python main.py
<_sre.SRE_Match object; span=(0, 10), match='010-123456'>
010-123456
010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值