(?=foo)
Lookahead
Asserts that what immediately follows the current position in the string is foo
(?<=foo)
Lookbehind
Asserts that what immediately precedes the current position in the string is foo
(?!foo)
Negative Lookahead
Asserts that what immediately follows the current position in the string is not foo
(?<!foo)
Negative Lookbehind
Asserts that what immediately precedes the current position in the string is not foo