bool matchImpl(char* str, char* pattern){
		if(*str == '\0' && *pattern == '\0'){
			return true;
		}

		if(*str != '\0' && *pattern == '\0'){
			return false;
		}

		if(*(pattern+1) == '*'){
			if(*str == *pattern || (*str != '\0' && *pattern == '.')){
				// 分别表示停留在这个匹配,忽略这个匹配和进入下一个匹配
				return (matchImpl(str+1, pattern)) || (matchImpl(str, pattern+2)) || (matchImpl(str+1, pattern+2));
			}else{
				// 忽略这个*匹配
				return matchImpl(str, pattern+2);
			}
		}

		if( (*str == *pattern) || (*str != '\0' && *pattern == '.') ){
			return matchImpl(str+1, pattern+1);
		}

		return false;
	}
Beispiel #2
0
ScriptPromise Cache::match(ScriptState* scriptState, const String& requestString, const CacheQueryOptions& options, ExceptionState& exceptionState)
{
    Request* request = Request::create(scriptState->executionContext(), requestString, exceptionState);
    if (exceptionState.hadException())
        return ScriptPromise();
    return matchImpl(scriptState, request, options);
}
    bool match(char* str, char* pattern)
    {
    	if(str == NULL || pattern == NULL){
    		return false;
    	}

    	return matchImpl(str, pattern);
    }
Beispiel #4
0
ScriptPromise Cache::match(ScriptState* scriptState, Request* request, const CacheQueryOptions& options)
{
    return matchImpl(scriptState, request, options);
}