Look around and groups
Another beneficial use of look around constructions is inside groups. Typically, when groups are used, a very specific result has to be matched and returned inside the group. As we don't want to pollute the groups with information that is not required, among other potential options we can leverage look around as a favorable solution.
Let's say that we need to get a comma-separated value, the first part of the value is a name, while the second is a value. The format would be similar to this:
INFO 2013-09-17 12:13:44,487 authentication failed
As we learned in Chapter 3, Grouping, we can easily write an expression that will get these two values like the following:
/\w+\s[\d-]+\s[\d:,]+\s(.*\sfailed)/
However, we only want to match when the failure is not an authentication failure. We can accomplish this with the addition of a negative look behind. It will look like this:
/\w+\s[\d-]+\s[\d:,]+\s(.*(?<!authentication\s)failed)/
Once we put this in Python's console, we will...