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(.*(?<!authentications)failed)/

Once we put this in Python's console, we will get the following output:

>>>pattern = re.compile(r'w+s[d-]+s[d:,]+s(.*(?<!authentications)failed)')
>>>pattern.findall("INFO 2013-09-17 12:13:44,487 authentication failed")
[]
>>>pattern.findall("INFO 2013-09-17 12:13:44,487 something else failed")
['something else failed']
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.156.107