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

Expression régulière Python【1】

黄舟
Libérer: 2017-02-07 16:28:53
original
1397 Les gens l'ont consulté

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'
Copier après la connexion

Essayez de faire correspondre les nombres :

>>> ljds = re.search('\d',vlan).group()
>>> ljds
'6'
Copier après la connexion

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
Copier après la connexion

'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'
Copier après la connexion

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'
Copier après la connexion

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'
Copier après la connexion

Ensuite, introduisons « capture » :

(exp) : Match exp.

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

(?<=exp) : Faites correspondre la position après exp.

>>> vlan = 'switchport access vlan 612'

Le plus basique :

>>> ljds = re.search(&#39;(access)&#39;,vlan).group()
>>> ljds
&#39;access&#39;
Copier après la connexion

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

>>> ljds = re.search(&#39;.*(?=access)&#39;,vlan).group()
>>> ljds
&#39;switchport &#39;
Copier après la connexion

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

>>> ljds = re.search(&#39;(?<=vlan).*&#39;,vlan).group()
>>> ljds
&#39; 612&#39;
Copier après la connexion

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()
Copier après la connexion

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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal