描述
在计算机中,通配符是一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。让我们来学习通配符的匹配规则:
∙‘*’ 符号代表匹配 0 个或以上的数字或字母;
∙‘?’ 符号代表匹配 1 个数字或字母;
∙小写字母字符代表匹配自身和自身的大写字母形态;
∙大写字母字符代表匹配自身和自身的小写字母形态;
∙其他字符代表匹配自身。
现在,对于给定的通配符字符串 s 和目标字符串 p,不考虑大小写,请判断 s 是否可以匹配得到 p。如果可以,输出 true;否则,输出 false。
在本题中,给定的字符串由 ASCII 码在 33 到 126 范围内的可见字符构成。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。
输入描述:
第一行输入一个长度为 1≦len(s)≦100、由可见字符构成的通配符字符串 s。
第二行输入一个长度为 1≦len(p)≦100 、由可见字符构成的目标字符串 p。
输出描述:
如果可以匹配得到,输出 true;否则,输出 false。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let reg = await readline();
const s = await readline();
reg = reg.replace(/\*/g, "\\w*").replace(/\?/g, "\\w").toLowerCase();
const r = new RegExp(reg);
const res = s.match(r);
if (res === null) {
console.log(false);
return;
}
if (res[0] === s) {
console.log(true);
return;
}
console.log(false);
})();