bsp; end else begin //Match individual char exclusion. if (aSource[0] = aPattern[0]) then begin //Given char failed set element exclusion. Result := False; Break; end else Inc(aPattern); end; end; end else begin //Match for inclusion of given set... Inc(aPattern); Result := False; while (aPattern[0] <> '''']'''') do begin if (aPattern[1] = ''''-'''') then begin //Match char inclusion range. if (aSource[0] >= aPattern[0]) and (aSource[0] <= aPattern[2]) then begin //Given char matched set range inclusion. // Continue testing... Result := True; Break; end else Inc(aPattern, 3); end else begin //Match individual char inclusion. if (aSource[0] = aPattern[0]) then begin //Given char matched set element inclusion. // Continue testing... Result := True; Break; end else Inc(aPattern); end; end; end;
if (Result) then begin //Match was found. Continue further. Inc(aSource); //Position Pattern to char after "]" while (aPattern[0] <> '''']'''') and (aPattern[0] <> #0) do Inc(aPattern); if (aPattern[0] = #0) then begin //Invalid Pattern - missing "]" Result := False; Exit; end else Inc(aPattern); end else Exit; end;
else begin //Match given single char. if (aSource[0] <> aPattern[0]) then begin Result := False; Break; end;
//Continue testing next char... Inc(aSource); Inc(aPattern); end; end; end; end;
function MatchPattern(const aPattern, aSource: string): Boolean; begin Result := _MatchPattern(PChar(aPattern), PChar(aSource)); end;
上一页 [1] [2] |