Python RegExp global flag
Question:
Is there a flag or some special key in python to use pattern multiple times.
I used to test http://gskinner.com/RegExr/ my RegExp, it worked correctly in it.
But when testing in correct enviorment match only returns None.
import re
pattern = r"(?P<date>--dd-w+:dd)[ t]+(?P<user>w+)[ t]+(?P<method>[w ]+)[" ]* (?P<file>[w\:.]+)@@(?P<version>[w\]+)[" ]*(?P<labels>[(w, .)]+){0,1}[s "]*(?P<comment>[w .-]+){0,1}["]"
base = """
--02-21T11:22 user3 create version "W:foobarfooz.bat@@main1" (label1, label2, label3, label22, label33, ...)
"merge in new bat-based fooz installer"
--02-21T11:22 user1 create version "W:foobarfooz.bat@@main "
--02-21T11:22 user2 create branch "W:foobarfooz.bat@@main"
"merge in new bat-based fooz installer"
--02-13T11:22 user1 create version "W:foobarfooz.bat@@main1"
"Made to use new fooz.bat"
"""
r = re.match(pattern, base)
print(r)
Answers:
re.match
tries to match the pattern at the start of the string.
You are looking for re.search
, re.findall
or re.finditer
Each of the Python regular expression matching functions are useful for different purposes.
re.match
always starts at the beginning of the string.
re.search
steps through the string from the start looking for the first match. It stops when it finds a match.
re.findall
returns a list of all the search matches.
In all the cases above, if there’s a group in the regex pattern, then the item you get back is a tuple of the full match followed by each group match in the order they appear in the regex pattern.
Is there a flag or some special key in python to use pattern multiple times.
I used to test http://gskinner.com/RegExr/ my RegExp, it worked correctly in it.
But when testing in correct enviorment match only returns None.
import re
pattern = r"(?P<date>--dd-w+:dd)[ t]+(?P<user>w+)[ t]+(?P<method>[w ]+)[" ]* (?P<file>[w\:.]+)@@(?P<version>[w\]+)[" ]*(?P<labels>[(w, .)]+){0,1}[s "]*(?P<comment>[w .-]+){0,1}["]"
base = """
--02-21T11:22 user3 create version "W:foobarfooz.bat@@main1" (label1, label2, label3, label22, label33, ...)
"merge in new bat-based fooz installer"
--02-21T11:22 user1 create version "W:foobarfooz.bat@@main "
--02-21T11:22 user2 create branch "W:foobarfooz.bat@@main"
"merge in new bat-based fooz installer"
--02-13T11:22 user1 create version "W:foobarfooz.bat@@main1"
"Made to use new fooz.bat"
"""
r = re.match(pattern, base)
print(r)
re.match
tries to match the pattern at the start of the string.
You are looking for re.search
, re.findall
or re.finditer
Each of the Python regular expression matching functions are useful for different purposes.
re.match
always starts at the beginning of the string.
re.search
steps through the string from the start looking for the first match. It stops when it finds a match.
re.findall
returns a list of all the search matches.
In all the cases above, if there’s a group in the regex pattern, then the item you get back is a tuple of the full match followed by each group match in the order they appear in the regex pattern.