Код:
function HasMatches(ATextFile, APatternFile : String; ACaseSensitive : Boolean = False) : Boolean;
var
slText, slPattern : TStringList;
I : Integer;
begin
Result := False;
slText := TStringList.Create;
slPattern := TStringList.Create;
Try
slText.LoadFromFile(ATextFile);
slPattern.LoadFromFile(APatternFile);
If Not ACaseSensitive Then
Begin
slText.Text := AnsiUpperCase(slText.Text);
slPattern.Text := AnsiUpperCase(slPattern);
End
For I := 0 To slPattern.Count-1 Do
Begin
Result := Pos(slPattern[i],slText.Text) > 0;
If Result Then Break;
End;
Finally
slText.Free;
slPattern.Free;
End;
end;
Останавливается после первого совпадения.
Не найдет совпадение, если искомое выражение "разбито" по разным строкам. Если надо - то надо в slText.Text заменить все переводы строк на одиночнык пробелы.