Python3 【正则表达式】水平考试:精选试题和答案

发布于:2025-02-10 ⋅ 阅读:(55) ⋅ 点赞:(0)

Python3 【正则表达式】水平考试:精选试题和答案


试卷说明

本试卷包含:选择题15 道、填空题10 道和 编程题5 道,总分 100 分。每道题后附有答案和解析。


选择题(每题 2 分,共 30 分)

  1. 以下哪个正则表达式可以匹配任意数字?

    • A. \d
    • B. \D
    • C. \w
    • D. \s
      答案:A
      解析\d 匹配任意数字,\D 匹配非数字,\w 匹配字母、数字或下划线,\s 匹配空白字符。
  2. 以下哪个正则表达式可以匹配一个或多个字母?

    • A. [a-z]
    • B. [a-z]+
    • C. [a-z]*
    • D. [a-z]?
      答案:B
      解析+ 表示前面的字符至少出现一次。
  3. 以下哪个正则表达式可以匹配字符串的开头?

    • A. $
    • B. ^
    • C. \b
    • D. \B
      答案:B
      解析^ 匹配字符串的开头,$ 匹配字符串的结尾。
  4. 以下哪个正则表达式可以匹配一个单词边界?

    • A. \b
    • B. \B
    • C. ^
    • D. $
      答案:A
      解析\b 匹配单词边界,\B 匹配非单词边界。
  5. 以下哪个正则表达式可以匹配一个浮点数?

    • A. \d+\.\d+
    • B. \d*\.\d*
    • C. \d+\.\d*
    • D. \d*\.\d+
      答案:A
      解析\d+\.\d+ 匹配至少一个数字,后跟一个小数点,再跟至少一个数字。
  6. 以下哪个正则表达式可以匹配一个邮箱地址?

    • A. [a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+
    • B. [a-zA-Z0-9]+@[a-zA-Z0-9]+
    • C. [a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+
    • D. [a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+\.
      答案:A
      解析:邮箱地址的格式为 用户名@域名.顶级域名
  7. 以下哪个正则表达式可以匹配一个 URL?

    • A. https?://\S+
    • B. http://\S+
    • C. https://\S+
    • D. http://\S
      答案:A
      解析https? 匹配 httphttps\S+ 匹配非空白字符。
  8. 以下哪个正则表达式可以匹配一个 HTML 标签?

    • A. <.*>
    • B. <.*?>
    • C. <.+>
    • D. <.+?>
      答案:B
      解析<.*?> 使用非贪婪匹配,避免匹配过多内容。
  9. 以下哪个正则表达式可以匹配一个中文字符?

    • A. [\u4e00-\u9fff]
    • B. [a-zA-Z]
    • C. \d
    • D. \w
      答案:A
      解析[\u4e00-\u9fff] 是中文字符的 Unicode 范围。
  10. 以下哪个正则表达式可以匹配一个 IP 地址?

    • A. \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
    • B. \d{1,3}\.\d{1,3}\.\d{1,3}
    • C. \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
    • D. \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
      答案:A
      解析:IPv4 地址由 4 个 1 到 3 位的数字组成,用 . 分隔。
  11. 以下哪个正则表达式可以匹配一个日期(YYYY-MM-DD)?

    • A. \d{4}-\d{2}-\d{2}
    • B. \d{2}-\d{2}-\d{4}
    • C. \d{4}/\d{2}/\d{2}
    • D. \d{2}/\d{2}/\d{4}
      答案:A
      解析\d{4}-\d{2}-\d{2} 匹配 YYYY-MM-DD 格式的日期。
  12. 以下哪个正则表达式可以匹配一个时间(HH:MM:SS)?

    • A. \d{2}:\d{2}:\d{2}
    • B. \d{2}:\d{2}
    • C. \d{2}:\d{2}:\d{2}:\d{2}
    • D. \d{2}:\d{2}:\d{2}:\d{2}:\d{2}
      答案:A
      解析\d{2}:\d{2}:\d{2} 匹配 HH:MM:SS 格式的时间。
  13. 以下哪个正则表达式可以匹配一个十六进制颜色值?

    • A. #[A-Fa-f0-9]{6}
    • B. #[A-Fa-f0-9]{3}
    • C. #[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3}
    • D. #[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3}|#[A-Fa-f0-9]{2}
      答案:C
      解析:十六进制颜色值可以是 3 位或 6 位。
  14. 以下哪个正则表达式可以匹配一个文件名和扩展名?

    • A. \w+\.\w+
    • B. \w+\.\w
    • C. \w+\.\w{2,4}
    • D. \w+\.\w+\.\w+
      答案:A
      解析\w+\.\w+ 匹配文件名和扩展名。
  15. 以下哪个正则表达式可以匹配一个强密码(至少 8 位,包含大小写字母、数字和特殊字符)?

    • A. ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[\W_]).{8,}$
    • B. ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$
    • C. ^(?=.*[A-Z])(?=.*[a-z]).{8,}$
    • D. ^(?=.*[A-Z])(?=.*\d).{8,}$
      答案:A
      解析(?=.*[A-Z]) 确保至少有一个大写字母,(?=.*[a-z]) 确保至少有一个小写字母,(?=.*\d) 确保至少有一个数字,(?=.*[\W_]) 确保至少有一个特殊字符。

填空题(每题 3 分,共 30 分)

  1. 正则表达式 \d{3}-\d{2}-\d{4} 可以匹配的格式是:________。
    答案:XXX-XX-XXXX(例如:123-45-6789)

  2. 正则表达式 ^[A-Za-z]+$ 可以匹配的字符串是:________。
    答案:仅包含字母的字符串

  3. 正则表达式 \b\w+\b 可以匹配的字符串是:________。
    答案:一个完整的单词

  4. 正则表达式 \d{2}:\d{2}:\d{2} 可以匹配的格式是:________。
    答案:HH:MM:SS(例如:12:34:56)

  5. 正则表达式 [\u4e00-\u9fff]+ 可以匹配的字符串是:________。
    答案:中文字符

  6. 正则表达式 ^[a-zA-Z0-9_]{4,16}$ 可以匹配的字符串是:________。
    答案:4 到 16 位的用户名(字母、数字、下划线)

  7. 正则表达式 https?://\S+ 可以匹配的字符串是:________。
    答案:HTTP 或 HTTPS 协议的 URL

  8. 正则表达式 \d+\.\d+ 可以匹配的字符串是:________。
    答案:浮点数(例如:3.14)

  9. 正则表达式 ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ 可以匹配的字符串是:________。
    答案:十六进制颜色值(例如:#FFFFFF 或 #FFF)

  10. 正则表达式 ^(\d{4})-(\d{2})-(\d{2})$ 可以匹配的格式是:________。
    答案:YYYY-MM-DD(例如:2023-10-05)


编程题(每题 8 分,共 40 分)

  1. 编写一个正则表达式,匹配一个合法的邮箱地址。
    答案:

    import re
    pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
    emails = ["test@example.com", "invalid-email@com"]
    for email in emails:
        if re.match(pattern, email):
            print(f"Valid: {email}")
        else:
            print(f"Invalid: {email}")
    
  2. 编写一个正则表达式,匹配一个合法的手机号码(中国大陆)。
    答案:

    import re
    pattern = r'^1[3-9]\d{9}$'
    phones = ["13800138000", "12345678901"]
    for phone in phones:
        if re.match(pattern, phone):
            print(f"Valid: {phone}")
        else:
            print(f"Invalid: {phone}")
    
  3. 编写一个正则表达式,匹配一个合法的 URL。
    答案:

    import re
    pattern = r'https?://(?:www\.)?\S+'
    urls = ["https://www.example.com", "ftp://example.com"]
    for url in urls:
        if re.match(pattern, url):
            print(f"Valid: {url}")
        else:
            print(f"Invalid: {url}")
    
  4. 编写一个正则表达式,匹配一个合法的日期(YYYY-MM-DD)。
    答案:

    import re
    pattern = r'^\d{4}-\d{2}-\d{2}$'
    dates = ["2023-10-05", "2023/10/05"]
    for date in dates:
        if re.match(pattern, date):
            print(f"Valid: {date}")
        else:
            print(f"Invalid: {date}")
    
  5. 编写一个正则表达式,匹配一个合法的强密码(至少 8 位,包含大小写字母、数字和特殊字符)。
    答案:

    import re
    pattern = r'^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[\W_]).{8,}$'
    passwords = ["Password123!", "weakpass"]
    for pwd in passwords:
        if re.match(pattern, pwd):
            print(f"Strong: {pwd}")
        else:
            print(f"Weak: {pwd}")
    

总分:100 分

  • 选择题:15 题 × 2 分 = 30 分
  • 填空题:10 题 × 3 分 = 30 分
  • 编程题:5 题 × 8 分 = 40 分

网站公告

今日签到

点亮在社区的每一天
去签到