Haven't been here for awhile, Thought I would release a boyermore implementation search in Delphi, super fast.. just change the Chars to byte and your set or modify it for wild cards by changing
Orginal(Find this)
Code:
While pTarget[i] = pPattern[j] Do
WildCard(Replace With)
Code:
While (pTarget[i] = pPattern[j]) or (pPattern[j] = '*') Do
^ Ofcause "*" can be any char or byte you want...
BoyerMore Search Pattern:
Code:
(*
ByerMore Search Pattern Coded By Departure
*)
Function SearchPattern(Const pTarget, pPattern: PChar): DWORD;
Var
i :Integer;
j :Integer;
k :Integer;
iTargetLen :Integer;
iPatternLen :Integer;
baStep: Array[0..255] Of Byte;
Begin
Result := 0;
iTargetLen := Length(pTarget);
iPatternLen := Length(pPattern);
If iTargetLen * iPatternLen = 0 Then Exit;
FillChar(baStep,SizeOf(baStep), iPatternLen);
For K := 0 to iPatternLen -1 do baStep[Ord(pPattern[k])]:= iPatternLen - K;
While K <= iTargetLen Do
Begin
i := k - 1;
j := iPatternLen - 1;
While pTarget[i] = pPattern[j] Do
Begin
Dec(i);
Dec(j);
End;
If j = -1 Then
Begin
Result := i + 2;
Exit;
End;
Inc(K, baStep[Ord(pTarget[k])]);
End;
End;