Date Regex Python
Solution 1:
Use re.findall
rather than re.match
, it will return to you list of all matches:
>>> s = "Dec 31, 2013 - Jan 4, 2014"
>>> r = re.findall(r'[A-z]{3}\s{1,}\d{1,2}[,]\s{1,}\d{4}',s)
>>> r
['Dec 31, 2013', 'Jan 4, 2014']
>>>
>>> s = 'xyz Dec 31, 2013 - Jan 4, 2014'
>>> r = re.findall(r'[A-z]{3}\s{1,}\d{1,2}[,]\s{1,}\d{4}',s)
>>> r
['Dec 31, 2013', 'Jan 4, 2014']
From Python docs:
re.match(pattern, string, flags=0)
If zero or more characters at the beginning of string match the regular expression pattern, return a corresponding MatchObject instance
In the other hand:
findall()
matches all occurrences of a pattern, not just the first one as search() does.
Solution 2:
Use the search method instead of match. Match compares the whole string but search finds the matching part.
Solution 3:
p = re.compile(r'.*?[A-Za-z]{3}\s{1,}\d{1,2}[,]\s{1,}\d{4}')
match
matches a string from start.if start does is not same it will fail.In the first example xyz
will be consumed by [A-Za-z]{3}
but rest of the string will not match.
You can directly use your regex with re.findall
and get the result without caring about the location of the match.
Post a Comment for "Date Regex Python"