Regex 找出正则表达式是否可以匹配
假设p是定义为“AB”的正则表达式模式,其中a,B是子模式。有一个字符串T,它是根据模式P测试的。我想知道T是否是P的部分匹配,这意味着T是针对a的,而不是针对B的,因为它的长度不足以匹配B。如果它与一个由B匹配的字符串U组合,T可能是匹配的Regex 找出正则表达式是否可以匹配,regex,Regex,假设p是定义为“AB”的正则表达式模式,其中a,B是子模式。有一个字符串T,它是根据模式P测试的。我想知道T是否是P的部分匹配,这意味着T是针对a的,而不是针对B的,因为它的长度不足以匹配B。如果它与一个由B匹配的字符串U组合,T可能是匹配的 var A = "[a-z]{3}"; var B = "[0-9]{2}" var P = A + B; var T = "abc"; var U = "20"; var macthes_T = regex(P, T); // false var m
var A = "[a-z]{3}";
var B = "[0-9]{2}"
var P = A + B;
var T = "abc";
var U = "20";
var macthes_T = regex(P, T); // false
var matches_U = regex(P, U); // false
var matches_TU = regex(P, T + U); // true
var couldMatch_T = magic(P, T); // true
var couldMatch_U = magic(P, U); // false
var couldMatch_TU = magic(P, T + U); // true
现在我想在A上做这个递归,因为它是p的“开始”和输入T的神奇函数的“实现”,它看起来像这样:
var A_1 = "[a-z]";
var A_2 = "[a-z]";
var A_3 = "[a-z]";
var A = A_1 + A_2 + A_3;
// T="" would return false
// T="a" would return true
var hasChar(T) {
return length(T) > 0;
}
// T="ab" would return a and T is "b"
var getChar(T) {
var c = T[0];
T = substring(T, 1);
return c;
}
// Let x element of [a-z]
// would return true for "", "x", "xx", "xxx"
// would return false for any other input T
var magic_A(T) {
if(!hasChar(T)) {
return true;
}
if(!regex(A_1, getChar(T))) {
return false;
}
if(!hasChar(T)) {
return true;
}
if(!regex(A_2, getChar(T))) {
return false;
}
if(!hasChar(T)) {
return true;
}
if(!regex(A_3, getChar(T))) {
return false;
}
return true;
}
嗯,像这样的 \b(a | ab)[a-z]* 这一个检查是否有a或ab,然后在后面的a-z之间的任何字符,并将整个单词包装为匹配 刚刚注意到你的代码不能与正则表达式一起工作
这里有一些参考资料,你的问题到处都是。请明确说明哪些应该匹配,哪些不应该匹配。另外,
*?+
也是无效的正则表达式。除非你指的是单独的字符。无论哪种方式,startsWith
都不适用于正则表达式。。。