The python regex pattern object has a findall()
method which returns all matches containing the string being looked up. This is obviously different from search()
method, which returns a match object containing the “first time” matched text in the string being searched. Take a look at the following examples and pay attention to the distinction.
# first you should import python regex re module. >>> import re # create a python regex pattern string. >>> regex_pattern_str = r'\d\d\d\d-\d\d\d\d\d\d\d\d' # compile the python regex pattern. >>> phone_num_regex = re.compile(regex_pattern_str) # phone numbers string. >>> phone_numbs_str = 'phone_num_1: 0891-88997788;phone_num_2:0281-89896868.' # get first time matched phone number with search method. >>> phone_num = phone_num_regex.search(phone_numbs_str) # print out the first matched phone number. >>> print('Matched phone number : ' + phone_num.group()) Matched phone number : 0891-88997788 # get all matched phone number string >>> phone_nums = phone_num_regex.findall(phone_numbs_str) # print out all matched phone number string. >>> print('Matched phone numbers : ' + str(phone_nums)) Matched phone numbers : ['0891-88997788', '0281-89896868']
If there are no groups in the python regex pattern string that calls findall()
method (as in the previous example), the findall()
method returns a list of matching strings ([‘0891-88997788’, ‘0281-89896868’]).
If there are groups in the python regex pattern string calling findall()
method, the method findall()
will return a list of string tuples (each group corresponds to a string in the tuple), as shown in the following example.
>>> import re >>> # there are groups in the regular expression pattern string. >>> regex_pattern_str = r'(\d\d\d\d)-(\d\d\d\d\d\d\d\d)' >>> >>> phone_num_regex = re.compile(regex_pattern_str) >>> >>> phone_numbs_str = 'phone_num_1: 0891-88997788;phone_num_2:0281-89896868.' >>> # findall method will return groups in a tuple list. >>> phone_nums = phone_num_regex.findall(phone_numbs_str) >>> >>> print('Phone number group : ' + str(phone_nums)) Phone number group : [('0891', '88997788'), ('0281', '89896868')]