If the number of whitespaces before and after 'and' is unknown (but in each case there is at least one), a simple regex should do:
str = "this and that but also thit and that";
StringCases[str, RegularExpression[".{3}\s+and\s+.{3}"]]
{his and tha, hit and tha}
Alternatively, a positive lookahead may be used:
StringCases[str, RegularExpression["(?=(.{3}\s+and\s+.{3}))\\1"]]
StringCases[str, RegularExpression["(?=(.{3}\s+and\s+.{3}))"]:> "$1"]
{his and tha, hit and tha}
{his and tha, hit and tha}
For strings such as "this and that and thit and that" considered by C.E above:
str2 = "this and that and thit and that";
StringCases[str2, RegularExpression[".{3}\s+and\s+.{3}"], Overlaps:> True]
StringCases[str2, RegularExpression["(?=(.{3}\s+and\s+.{3}))\\1"],Overlaps->True]
StringCases[str2, RegularExpression["(?=(.{3}\s+and\s+.{3}))"]:> "$1"]
{his and tha, hat and thi, hit and tha}
{his and tha, hat and thi, hit and tha}
{his and tha, hat and thi, hit and tha}
In addition posix character classes are supported:
StringCases[str2, RegularExpression["[[:alnum:]]{3}[[:blank:]][Aa]nd[[:blank:]][[:alnum:]]{3}"], Overlaps:> True]
{his and tha, hat and thi, hit and tha}
For positive lookaheads, compare (see here):
s = "123456789123456789";
StringCases[s,RegularExpression["(?=(\d{10}))\\1"]]
StringCases[s,RegularExpression["(?=(\d{10}))\\1"],Overlaps:>True]
StringCases[s,RegularExpression["(?=(\d{10}))"]:> "$1"]
{1234567891}
{1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789}
{1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789}