If you want to match an entire line if and only if it contains both "cat" and "dog", use the following Perl regex:
^ anchors the regex at the start of the line
(?=.*\bcat\b) asserts that it is possible to match any number of characters, followed by the word "cat" (the \b word boundary anchors ensure that it doesn't match "complicate" oder "catastrophe"). This is called "positive lookahead".
(?=.*\bdog\b) same for the word "dog". If you have more search terms, just add them the same way.
.*\r\n matches the entire line including linebreaks.
Unfortunately, the last line means that the regex will fail if "dog" and "cat" occur on the last line of the file unless that's also CRLF terminated. Correctly, I would have used \r?\n? instead of \r\n to make those linebreaks optional. However, due to a bug in UE's regex engine, this doesn't work (it skips matches in adjacent lines). So either use \r?\n? and apply the regex multiple times in a row, or make sure that the last line of the file is CRLF terminated.