Maison  >  Article  >  développement back-end  >  Expression régulière Python【1】

Expression régulière Python【1】

黄舟
黄舟original
2017-02-07 16:28:531359parcourir

Cet article parle des expressions régulières de Python.

Sans plus tarder, commençons par le plus simple :

'.' : peut correspondre à n'importe quel caractère (juste un point) à l'exception des sauts de ligne.

'*' peut correspondre à la sous-expression précédente zéro ou plusieurs fois (juste un astérisque).

Ainsi, la combinaison des deux '.*' (point étoile) ci-dessus correspond à tout sauf aux caractères de nouvelle ligne.

'' : Répéter une ou plusieurs fois.

'?' : Répétez zéro ou une fois.

'd' : correspond à un caractère numérique. Équivalent à [0-9].

'w' correspond à n'importe quel caractère de mot, y compris un trait de soulignement. Équivalent à '[A-Za-z0-9_]'.

'/s' correspond à n'importe quel caractère d'espacement, y compris les espaces, les tabulations, les sauts de formulaire, etc. Équivalent à [ fnrtv]

'^' correspond au début de la chaîne d'entrée.

'$' correspond à la fin de la chaîne d'entrée.

Les éléments ci-dessus sont très couramment utilisés, bien sûr, il en existe beaucoup plus couramment, veuillez consulter le manuel si nécessaire.

Cette description n'est pas assez intuitive, alors faites simplement l'expérience. Il est très simple d'utiliser des expressions régulières en Python, il suffit d'importer re directement :

>>> importer re

>>>

d'abord Essayez faire correspondre tout :

>>> vlan = 'switchport access vlan 612'
>>> ljds = re.search('.*',vlan).group()
>>> ljds
'switchport access vlan 612'

Essayez de faire correspondre les nombres :

>>> ljds = re.search('\d',vlan).group()
>>> ljds
'6'

Parce que '/d' correspond à un nombre, donc si vous voulez faire correspondre '612 ici', trois nombres , vous pouvez ajouter '{3}' :

>>> ljds = re.search('\d{3}',vlan).group()
>>> ljds

'612'

De même, si vous souhaitez faire correspondre 13 caractères (espaces compris) :

>>> ljds = re.search('[\w\s]{13}',vlan).group()
>>> ljds
'switchport ac'

Je voudrais également mentionner ici que les quantificateurs des expressions régulières impliquent des modes gourmands et non gourmands, c'est-à-dire prendre la valeur maximale et faire correspondre autant de correspondances que possible. Non gourmand est tout le contraire (le mode gourmand est la valeur par défaut). Par exemple :

Ce qui précède correspond à 13 caractères. S'il est écrit pour correspondre à 2 à 10 caractères, écrivez simplement : '[ws]{2,10}', puis indiquez s'il correspond à 2 ou 10. un? Parce que la valeur par défaut est le mode gourmand, il correspondra au maximum :

>>> ljds = re.search('[\w\s]{2,10}',vlan).group()
>>> ljds
'switchport'

Ajoutez un point d'interrogation '?' après le quantificateur pour passer en mode non gourmand, c'est-à-dire la correspondance minimale :

>>> ljds = re.search('[\w\s]{2,10}?',vlan).group()
>>> ljds
'sw'

Ensuite, introduisons « capture » :

(exp) : Match exp.

(?=exp) : Faites correspondre la position avant exp.

(?240199c56bcea3e45eb93f22fa859923>> vlan = 'switchport access vlan 612'

Le plus basique :

>>> ljds = re.search('(access)',vlan).group()
>>> ljds
'access'

correspond à n'importe quel caractère avant 'access' :

>>> ljds = re.search('.*(?=access)',vlan).group()
>>> ljds
'switchport '

Correspond à tous les caractères après « vlan » :

>>> ljds = re.search(&#39;(?<=vlan).*&#39;,vlan).group()
>>> ljds
&#39; 612&#39;

OK, après avoir appris cela, regardez l'expression régulière qui a capturé le nom du routeur avant :

DeviceName = re.search(&#39;.*(?=#show run)&#39;,telreply).group()

Ce qui précède est le contenu de l'expression régulière Python [1]. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn