CS50-Regular Expressions

敖炜 Lv5

CS50’s Introduction to Programming with Python Lecture 7

Regular Expressions

  1. 正则表达式是一种模式,使用模式来匹配某种数据(通常是用户输入)是很常见的

  2. python中有一个正则表达式库re

    • re库中有很多函数来定义、检查甚至替换模式
    • re.search(pattern, string, flags=0)
      • 可选flags
        • re.IGNORECASE忽略用户输入的大小写
        • re.MULTILINE处理多行
        • re.DOTAIL
    • re.match(pattern, string, flags=0)
      • 自动从字符串的开头开始匹配
    • re.fullmatch(pattern, string, flags=0)
      • 既匹配字符串的开头,也匹配字符串的结尾
    • re.sub(pattern, repl, string, count=0, flags=0)
      • 替换指定模式的子句,并将结果返回
    • re.split(pattern, string, maxsplit=0, flags=0)
      • 分割字符串,
    • re.findall(pattern, string, flags=0)
  3. 正则表达式的符号

    • .表示除换行符外的任何单个字符
    • *表示0个或多个重复
    • +表示1个或多个重复
    • ?表示0个或1个重复
    • {m}表示m个重复
    • {m,n}表示m-n个重复
    • \转义字符
    • 字符串前加r表示以原始形式传入,对所有正则表达式使用原始字符串是一个好习惯
    • ^表示该模式匹配字符串的开头
    • $表示想要匹配字符串的末尾或字符串结尾的新行之前
    • []表示字符集,可使用连字符,里面没有空格
    • [^]集合的补(即表示不能匹配该集合中的任一字符)
    • A|B表示A或B
    • (...)表示一个group,将模式组合起来,还可以捕获他们,括号中的内容将作为函数返回值返回,将允许从用户自己的输入中提取特定量的信息
    • (?:...)非捕获版本
  4. 正则表达式自带了一些附加模式

    • \w表示单词字符,字母数字符号或下划线
    • \W前一个的补集
    • \d表示十进制数字
    • \D前一个的补集
    • \s表示空白字符
    • \S前一个的补集
  5. 用于验证用户的电子邮件地址

    1
    2
    3
    4
    5
    6
    7
    8
    import re

    email = input("What's your email? ").strip()

    if re.search(r"^(\w|\.)+@(\w+\.)+(com|edu|gov|net|org)&", email, re.IGNORECASE):
    print("Valid")
    else:
    print("Invalid")
  6. 使用渐进式的方式编写正则表达式,step by step

  • 标题: CS50-Regular Expressions
  • 作者: 敖炜
  • 创建于 : 2023-07-21 15:08:50
  • 更新于 : 2024-04-19 09:31:08
  • 链接: https://ao-wei.github.io/2023/07/21/CS50-Regular-Expressions/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
CS50-Regular Expressions