如何判断一个通配符表达式(又称glob)是否包含另一个通配符表达式?
通配符表达式包含关系判断
核心定义
判断通配符表达式g1是否包含g2,本质是确认:所有能匹配g2的字符串,必然都能匹配g1。
示例解析
给定示例:
g1 = "*.txt" g2 = "hello*.txt"
所有匹配g2的字符串(比如hello123.txt、helloworld.txt),都满足以.txt结尾的规则,完全符合g1的匹配逻辑,因此g1包含g2。
通用判断逻辑
可以按以下思路分析:
- 将通配符表达式拆分为「固定前缀」「通配段」「固定后缀」三部分
g1的固定前缀,必须是g2固定前缀的前缀(或g1无固定前缀)g1的固定后缀,必须是g2固定后缀的后缀(或g1无固定后缀)g1的通配符(*)覆盖范围需能包含g2的通配段及固定内容:比如g1为*.txt,g2为hello*.txt,g1的*可以覆盖hello加任意字符的组合,满足包含关系
- 特殊情况:
- 若
g1为*,则它包含任意通配符表达式 - 若
g2为*,仅当g1也为*时,才满足g1包含g2
- 若
内容的提问来源于stack exchange,提问作者michael
相关产品推荐
相关产品推荐

