# 字符串匹配

  • 判断字符串匹配时,有几种结果:

    • 不匹配
    • 完全匹配
      • 两个字符串的长度相同、同位字符相同,即 str1 == str2
    • 部分匹配
      • :两个字符串的长度不同,但短的那个字符串包含于另一个字符串。
    • 模糊匹配
      • :一个字符串删除、替换少量字符之后,就能与另一个字符串完全匹配。
      • 此时称两个字符串相似。
  • 判断字符串匹配时,有几种方式:

    • 普通模式
      • :比较同位字符是否相同。
      • 默认要求完全匹配,
    • 通配符模式
      • :使用通配符(wildcard)。
      • 默认要求完全匹配。
    • 正则模式
      • :使用正则表达式。
      • 默认要求部分匹配。

# import fnmatch

:Python 的标准库,使用 Unix shell 风格的通配符,进行字符串匹配。

  • 官方文档 (opens new window)

  • pattern 中可以包含以下通配符:

    ?         # 匹配单个字符。相当于正则的 .
    *         # 匹配任意个字符,包括零个。相当于正则的 .*
    [xxx]     # 声明一个字符集,用于匹配单个属于该字符集的字符
    [!xxx]    # 声明一个反向匹配的字符集
    
    • 例:
      [abc]   # 匹配 a、b、c 中的一个字符
      [a-z]   # 匹配 a~z 范围内的一个字符
      [!a-z]  # 匹配非 a~z 范围的一个字符
      
  • 常用函数:

    def fnmatch(string, pattern) -> bool
    
    • 功能:判断 string 是否与 pattern 匹配。
    • 例:
      >>> import fnmatch
      >>> fnmatch.fnmatch('1.txt', '1.txt')
      True
      >>> fnmatch.fnmatch('1.txt', '*.txt')
      True
      >>> fnmatch.fnmatch('1.txt', '?.txt')
      True