This article brings you a detailed introduction to regular expressions in python. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Regular
re = regular experssion
re module enables the Python language to have all the regular expression functions.
The compile function generates a regular expression object based on a pattern string and optional flag parameters. This object has a series of methods for regular expression matching and replacement.
Function: When processing a string, it will check whether the content of the string matches the regular expression you wrote.
If it matches, take out the matching content;Writing regular rules
pattern matching regular expression
string string to be matched
Three search methods
1). findall
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.findall(pattern_1,str)) #['hello', 'hello'] print(re.findall(pattern_2,str)) #['sheen']
2).match
match attempts to match from the starting position of the string,
If the starting position is not matched successfully, a None is returned;
If the starting position is matched successfully, an object will be returned;
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.match(pattern_1,str)) #<_sre.sre_match> print(re.match(pattern_1,str).group()) #返回match匹配的字符串内容,hello print(re.match(pattern_2,str)) #None</_sre.sre_match>
3).search
search will scan the entire string and only return the first successfully matched content;
If it can be found, return an object and obtain the corresponding string through the group method;
import re str = 'hello sheen,hello cute.' pattern_1 = r'hello' pattern_2 = r'sheen' print(re.search(pattern_1,str)) #<_sre.sre_match> print(re.search(pattern_1,str).group()) #hello print(re.search(pattern_2,str)) #<_sre.sre_match> print(re.search(pattern_2,str).group()) #sheen</_sre.sre_match></_sre.sre_match>
Special character class
.: Matches any character except \n; [.\n]
\d: digit--(number), matches a numeric character, equivalent to [0-9]
\ D: Matches a non-numeric character, equivalent to [^0-9]
\s: space (generalized space: space, \t, \n, \r), matches any single whitespace character;
\S: Matches any whitespace character except a single one;
\w: Alphanumeric or underscore, [a-zA-Z0-9_]
\W: Except alphanumeric or underscore, [^a-zA- Z0-9_]
import re # . print(re.findall(r'.','sheen\nstar\n')) #['s', 'h', 'e', 'e', 'n', 's', 't', 'a', 'r'] #\d#\D print(re.findall(r'\d','当前声望30')) #['3', '0'] print(re.findall(r'\D','当前声望30')) #['当', '前', '声', '望'] #\s#\S print(re.findall(r'\s', '\n当前\r声望\t为30')) #['\n', '\r', '\t'] print(re.findall(r'\S', '\n当前\r声望\t为30')) #['当', '前', '声', '望', '为', '3', '0'] #\w#\W print(re.findall(r'\w','lucky超可爱!!')) #['l', 'u', 'c', 'k', 'y', '超', '可', '爱'] print(re.findall(r'\W','lucky超可爱!!')) #['!', '!']
Specify the number of occurrences of characters
The number of occurrences of matching characters:
*: represents the previous character appearing 0 times or infinite times; d*, .*
: represents the previous character appearing once or infinite times; d
?: represents the previous character appearing 1 time or 0 times; Assuming that some characters can be omitted, you can also use
when not omitting. The second method:
{m}: The previous character appears m times;
{m, }: The previous character appears at least m times; * == {0,}; ==={1,}
{m,n}: The previous character appears m to n times; ? === {0 ,1}
import re #* 代表前一个字符出现0次或者无限次 print(re.findall(r's*','sheenstar')) #['s', '', '', '', '', 's', '', '', '', ''] print(re.findall(r's*','hello')) #['', '', '', '', '', ''] #+ 代表前一个字符出现一次或者无限次 print(re.findall(r's+','sheenstar')) #['s', 's'] print(re.findall(r's+','hello')) #[] # ? 代表前一个字符出现1次或者0次 print(re.findall(r'188-?', '188 6543')) #['188'] print(re.findall(r'188-?', '188-6543')) #['188-'] print(re.findall(r'188-?', '148-6543')) #[] # 匹配电话号码 pattern = r'\d{3}[\s-]?\d{4}[\s-]?\d{4}' print(re.findall(pattern,'188 0123 4567')) #['188 0123 4567'] print(re.findall(pattern,'188-0123-4567')) #['188-0123-4567'] print(re.findall(pattern,'18801234567')) #['188-0123-4567']
Exercise--Matching IP
You can search for a regular expression generator from the Internet, use the rules written by others, and test it yourself.
import re # | 表示或者 pattern = r'(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$' print(re.findall(pattern,'172.25.254.34')) #[('172', '25', '254', '34')] matchObj_1 = re.match(pattern,'172.25.254.34') if matchObj_1: print('匹配项:',matchObj_1.group()) #172.25.254.34 else: print('未找到匹配项') matchObj_2 = re.match(pattern,'172.25.254.343') if matchObj_2: print('匹配项:',matchObj_2.group()) else: print('未找到匹配项')
The above is the detailed content of Detailed introduction to regular expressions in python. For more information, please follow other related articles on the PHP Chinese website!