问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同)
?:匹配1个字符
注意:匹配时不区分大小写。
输入:
通配符表达式;
一组字符串。
输出:
返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false
数据范围:字符串长度:1\le s\le 100\1≤s≤100
进阶:时间复杂度:O(n^2)\O(n2) ,空间复杂度:O(n)\O(n)
先输入一个带有通配符的字符串,再输入一个需要匹配的字符串
返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false
输入:
te?t*.*
txt12.xls复制
输出:
false复制
输入:
z
zz复制
输出:
false复制
输入:
pq
pppq复制
输出:
false复制
输入:
**Z
0QZz复制
输出:
true复制
输入:
?*Bc*?
abcd复制
输出:
true复制
输入:
h*?*a
h#a复制
输出:
false复制
说明:
根据题目描述可知能被*和?匹配的字符仅由英文字母和数字0到9组成,所以?不能匹配#,故输出false 输入:
p*p*qp**pq*p**p***ppq
pppppppqppqqppqppppqqqppqppqpqqqppqpqpppqpppqpqqqpqqp复制
输出:
falseimport re
while True:
try:
pattern = raw_input().lower()
str1 = raw_input().lower()
p1 = "[a-zA-Z0-9]"
p2 = "[a-zA-Z0-9]{0,}"
pt = re.compile(pattern.replace("?", p1).replace("*", p2))
if len(pt.findall(str1)) == 1 and pt.findall(str1)[0] == str1:
print('true')
else:
print('false')
except:
break | 留言与评论(共有 0 条评论) “” |