Home  >  Article  >  Backend Development  >  Detailed introduction to regular expressions in python

Detailed introduction to regular expressions in python

不言
不言forward
2018-10-18 17:15:232580browse

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;
If it does not match, ignore it. 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超可爱!!'))           #['!', '!']

Detailed introduction to regular expressions in python

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('未找到匹配项')

Detailed introduction to regular expressions in python

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!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete