Python regex `match` function
Python Regex match() function explained with examples.
We'll cover the following...
The Match Function
The match function attempts to match a re pattern to string with optional flags.
Here is the syntax for this function −
re.match(pattern, string, flags=0)
Where,
pattern is	the regular expression to be matched,
string	is the string to be searched to match the pattern at the beginning of string and
flags, which you can specify different flags using bitwise OR (|).
Match Flags
| Modifier | Description | 
|---|---|
| re.I | Performs case-insensitive matching. | 
| re.L | Interprets words according to the current locale. This interpretation affects the alphabetic group ( \wand\W), as well as word boundary behavior (\band\B). | 
| re.M | Makes $match the end of a line and makes ^ match the start of any line. | 
| re.S | Makes a period (dot) match any character, including a newline. | 
| re.U | Interprets letters according to the Unicode character set. This flag affects the behavior of \w,\W,\b,\B. | 
| re.X | It ignores whitespace (except inside a set []or when escaped by abackslashand treats unescaped#as a comment marker. | 
Return values
- The re.matchfunction returns amatch objecton success andNoneupon failure. -
- Use group(n)orgroups()function of match object to get matched expression, e.g.,group(n=0)returns entire match (or specific subgroupn)
- The function groups()returns all matching subgroups in a tuple (empty if there weren’t any).
Example 1
Let’s find the words before and after the word to:
#!/usr/bin/pythonimport reline = "Learn to Analyze Data with Scientific Python";m = re.match( r'(.*) to (.*?) .*', line, re.M|re.I)if m:print "m.group() : ", m.group()print "m.group(1) : ", m.group(1)print "m.group(2) : ", m.group(2)else:print "No match!!"
The first group (.*) identified the string: Learn and the next group (*.?) identified the string: Analyze.
Example 2
groups([default]) returns a tuple containing all the subgroups of the match, from 1 up to however many groups are in the pattern.
#!/usr/bin/pythonimport reline = "Learn Data, Python";m = re.match( r'(\w+) (\w+)', line, re.M|re.I)if m:print "m.group() : ", m.groups()print "m.group (1,2)", m.group(1, 2)else:print "No match!!"
Example 3
groupdict([default]) returns a dictionary containing all the named subgroups of the match, keyed by the subgroup name.
#!/usr/bin/pythonimport renumber = "124.13";m = re.match( r'(?P<Expotent>\d+)\.(?P<Fraction>\d+)', number)if m:print "m.groupdict() : ", m.groupdict()else:print "No match!!"
Example 4
Start, end. How can we match the start or end of a string? We can use the “A” and “Z” metacharacters. We precede them with a backslash. We match strings that start with a certain letter, and those that end with another.
import revalues = ["Learn", "Live", "Python"];for value in values:# Match the start of a string.result = re.match("\AL.+", value)if result:print("START MATCH [L]:", value)# Match the end of a string.result2 = re.match(".+n\Z", value)if result2:print("END MATCH [n]:", value)
Example 5
start([group]) and end([group]) return the indices of the start and end of the substring matched by group. See the next lesson for an example.