You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的fnmatch匹配特定后缀的Unix Shell风格字符串?

解决fnmatch匹配特定后缀字符串的问题

问题原因

你用的0.1{.,test,alpha}这类大括号扩展语法是Bash等Shell的特性,但Python的fnmatch模块不支持该语法——它会把{、}当作普通字符处理,所以无法匹配你预期的字符串。

解决方案

方案1:用多个fnmatch模式做逻辑或

直接列出所有符合要求的目标字符串模式,通过any()判断是否匹配任意一个:

import fnmatch

def check_match(value):
    target_patterns = ['0.1.', '0.1test', '0.1alpha']
    return any(fnmatch.fnmatch(value, pattern) for pattern in target_patterns)

# 测试示例
test_values = ['0.1test', '0.1alpha', '0.1beta', '0-1alpha', '0.1.']
for v in test_values:
    print(f'{v}: SUCCESS' if check_match(v) else f'{v}: FAILURE')

方案2:直接使用正则表达式(更灵活)

因为需求是字符串必须严格以0.1开头,且后续只能是.、test或alpha(无其他多余字符),可以直接用正则表达式精准匹配:

import re

match_pattern = r'^0\.1(\.|test|alpha)$'
test_values = ['0.1test', '0.1alpha', '0.1beta', '0-1alpha', '0.1.']
for v in test_values:
    print(f'{v}: SUCCESS' if re.match(match_pattern, v) else f'{v}: FAILURE')

测试结果

运行上述代码会输出:

0.1test: SUCCESS
0.1alpha: SUCCESS
0.1beta: FAILURE
0-1alpha: FAILURE
0.1.: SUCCESS

完全符合你的预期要求。

内容的提问来源于stack exchange,提问作者kingJulian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:00:02