Detailed explanation of re regular module in python

PHP中文网
Release: 2017-06-23 10:00:00
Original
1632 people have browsed it

1. Common symbols of regular expressions

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
'?'     匹配前一个字符1次或0次
'{m}'   匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
'|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
'(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
 
 
'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\d'    匹配数字0-9
'\D'    匹配非数字
'\w'    匹配[A-Za-z0-9]
'\W'    匹配非[A-Za-z0-9]
's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
Copy after login

 

2. Common syntax

2.1 re.match matches from scratch

re.mathch(pattern,string,flags)

  • The first parameter is the regular expression Formula, here is "(\w+)\s", if the match is successful, a Match is returned, otherwise a None is returned;

  • The second parameter represents the string to be matched;

  • The third parameter is the Peugeot bit, which is used to control the matching method of the regular expression, such as: whether it is case-sensitive, multi-line matching, etc.

#匹配开头成功
>>> a=re.match("i",'inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0')
>>> a.group()
'i'

# 匹配开头失败
>>> a=re.match("n",'inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0')
>>> a.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: &#39;NoneType&#39; object has no attribute &#39;group&#39;
>>> print(a)
None

#\w匹配 (不匹配特殊字符 空格等)
>>> a=re.match("\w{4,10}",&#39;inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0&#39;)
>>> a.group()
&#39;inet&#39;
Copy after login

 

2.2 re.search

The re.search function will search for pattern matching within the string, only Returns the first match found, or None if the string does not match.

>>> a=re.search("\d+","sd234345resss")
>>> a.group()
&#39;234345&#39;
Copy after login

 

2.3 group and groups

>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").group()
>>> a
&#39;sd234345resss&#39;
>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").group(0)
>>> a
&#39;sd234345resss&#39;
>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").group(1)
>>> a
&#39;sd&#39;
>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").group(2)
>>> a
&#39;234345&#39;
>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").group(3)
>>> a
&#39;resss&#39;
>>> a=re.search("([a-z]*)(\d+)([a-z]*)","sd234345resss").groups()
>>> a
(&#39;sd&#39;, &#39;234345&#39;, &#39;resss&#39;)
Copy after login

 

2.4 re.findall(pattern,string,flags=0)

The above two methods are used to match single values, that is: they can only match strings One of them, if you want to match all elements in the string that meet the conditions, you need to use findall.

>>> a=re.findall("\d+","sd234/34*5resss")
>>> a
[&#39;234&#39;, &#39;34&#39;, &#39;5&#39;]
Copy after login

 

2.5 re.sub(pattern,repl,string,count=0,flags=0)

Replace the matched string

>>> s="123abc456"
>>> a=re.sub("\d+","SUB",s)
>>> a
&#39;SUBabcSUB&#39;
Copy after login

More powerful than str.replace

2.6 re.split(pattern, string, maxsplit=0, flags=0)

Group according to the specified match

s="123aaa345bbb789ccc"
>>> a=re.split("[a-z]*",s)
>>> a
[&#39;123&#39;, &#39;345&#39;, &#39;789&#39;, &#39;&#39;]
>>> a=re.split("[a-z]*",s,1)
>>> a
[&#39;123&#39;, &#39;345bbb789ccc&#39;]
>>> a=re.split("[a-z]*",s,2)
>>> a
[&#39;123&#39;, &#39;345&#39;, &#39;789ccc&#39;]
Copy after login

 

The above is the detailed content of Detailed explanation of re regular module in python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template