(?=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
L. Kwuida, A. Tepavcevic, and B. Seselja. Proceedings of the 12th International Conference on Conceptual Structures (ICCS 2004), volume 3127 of Lecture Notes in Computer Science, page 227-241. Springer, (2004)
J. Klinger. Proceedings of the 13th International Conference on Conceptual Structures (ICCS 2005), volume 3596 of Lecture Notes in Computer Science, page 209-222. Springer, (2005)
M. Leclère, and M. Mugnier. Proceedings of the 14th International Conference on Conceptual Structures (ICCS 2006), volume 4068 of Lecture Notes in Computer Science, page 331-345. Springer, (2006)