Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des regulären Moduls in Python

Detaillierte Erklärung des regulären Moduls in Python

PHP中文网
PHP中文网Original
2017-06-23 10:00:001633Durchsuche

1. Gemeinsame Symbole für reguläre Ausdrücke

'.'     默认匹配除\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'

>2.1 re.match stimmt von Grund auf überein

re.mathch(pattern , string, flags)

Der erste Parameter ist ein regulärer Ausdruck, hier „(w+)s“, wenn der Match erfolgreich ist, wird ein Match zurückgegeben, andernfalls ein None zurückgegeben;

Der zweite Parameter stellt die abzugleichende Zeichenfolge dar;
  • Der dritte Parameter ist das Stammbaumbit, das zur Steuerung verwendet wird Vergleichsmethode des regulären Ausdrucks, z. B. ob Groß-/Kleinschreibung beachtet wird, mehrzeiliger Vergleich usw.
  •  

2.2 re.search
#匹配开头成功
>>> 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;

Die re.search-Funktion sucht nach Musterübereinstimmungen innerhalb der Zeichenfolge. Es wird nur die erste Übereinstimmung gefunden und dann zurückgegeben, wenn die Zeichenfolge nicht übereinstimmt , Keine wird zurückgegeben.

 

2.3 Gruppe und Gruppen
>>> a=re.search("\d+","sd234345resss")
>>> a.group()
&#39;234345&#39;

 

2.4 re.findall(pattern, string, flags=0)
>>> 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;)
Die beiden oben genannten Methoden werden verwendet, um einzelne Werte abzugleichen, das heißt: Es kann nur mit einem Element in der Zeichenfolge übereinstimmen. Wenn Sie alle Elemente in der Zeichenfolge abgleichen möchten, die die Bedingungen erfüllen, müssen Sie findall verwenden.

 

2.5 re.sub(pattern,repl,string,count=0,flags=0)
>>> a=re.findall("\d+","sd234/34*5resss")
>>> a
[&#39;234&#39;, &#39;34&#39;, &#39;5&#39;]

Ersetzen Sie die übereinstimmende Zeichenfolge

Es ist leistungsfähiger als str.replace

>>> s="123abc456"
>>> a=re.sub("\d+","SUB",s)
>>> a
&#39;SUBabcSUB&#39;
2.6 re.split(pattern, string, maxsplit=0, flags=0)

Gruppieren Sie nach der angegebenen Übereinstimmung

 🎜>

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des regulären Moduls in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn