[PYTHON] Expression régulière look-ahead, after-yomi

Comme condition préalable, la bibliothèque «re» est importée.

import re

Toutes les notations suivantes extraient uniquement la partie de texte, et les conditions au moment de l'extraction sont affichées dans les groupes (). L'affirmation est extraite lorsque les conditions de texte dans le groupe correspondent également. Le négatif est extrait lorsque les conditions de texte du groupe ne correspondent pas.

Nom Méthode de description Aperçu
Regard positif vers l'avenir texte(?=xxx) Récupère la partie de texte lorsque xxx correspond
Perspectives négatives texte(?!xxx) Obtenir une partie de texte lorsque xxx ne correspond pas
Regard affirmatif derrière (?<=xxx)texte Récupère la partie de texte lorsque xxx correspond
Perspectives négatives (?<!xxx)texte Obtenir une partie de texte lorsque xxx ne correspond pas

Regard positif vers l'avenir

En insérant (? = Xxx) après le texte que vous voulez extraire, la partie de texte est extraite lorsque le texte que vous voulez extraire correspond et la partie xxx correspond également.

re.findall('AB(?=CDEF)', 'ABCDEF') #['AB']
re.findall('AB(?=DEF)', 'ABCDEF') #[]
re.findall('AB(?=CD)', 'ABCDEF') #['AB']
re.findall('.+(?=CD)', 'ABCDEF') #['AB']
re.findall('AB(?=[A-Z]{2,3})', 'ABCDEF') #['AB']

Perspectives négatives

En cas d'anticipation négative, écrivez (?! Xxx) après le texte que vous souhaitez extraire. Extraire la partie de texte lorsque la partie de texte correspond et que la partie xxx ne correspond pas

re.findall('AB(?!CDEF)', 'ABCDEF') #[]
re.findall('AB(?!DEF)', 'ABCDEF') #['AB']
re.findall('AB(?!CD)', 'ABCDEF') #[]

Puisqu'il est refusé, le résultat est à l'opposé de l'anticipation.

Regard affirmatif derrière

En écrivant le texte que vous souhaitez extraire après (? <= Xxx), la partie de texte est extraite lorsque la partie xxx correspond et le texte correspond également à la partie.

re.findall('(?<=ABCD)EF', 'ABCDEF') #['EF']
re.findall('(?<=BC)EF', 'ABCDEF') #[]
re.findall('(?<=)EF', 'ABCDEF') #['EF']

Perspectives négatives

En écrivant le texte que vous voulez extraire après (? <! Xxx), la partie de texte est extraite lorsque la partie xxx n'existe pas et que le texte correspond à la partie.

re.findall('(?<!ABCD)EF', 'ABCDEF') #[]
re.findall('(?<!BC)EF', 'ABCDEF') #['EF']
re.findall('(?<!)EF', 'ABCDEF') #[]

Application de l'anticipation positive

text = 'Python python PYTHON'

re.findall('py(?=thon)', text) #['py']
re.findall('Py|py(?=thon)', 'Python python PYTHON') #['Py', 'py']
re.findall('py(?=thon)', 'Python python PYTHON', re.IGNORECASE) #['Py', 'py', 'PY']

Utilisation susceptible de déteindre

text = 'adresse de rue:Shinjuku-ku, Tokyo 〇〇〇〇 Tour\r Cliquez ici pour la carte'
re.findall('(?<=:).*(?=\r)', text)[0] #Shinjuku-ku, Tokyo 〇〇〇〇 Tour

[Site de référence] Maîtrisez la vision en avant et en arrière des expressions régulières!

Recommended Posts

Expression régulière look-ahead, after-yomi
Expression régulière gourmande
Expression régulière re
Expression régulière dans regex.h
Expression régulière en pymongo
Expression régulière de la notation de date
mémo d'expression régulière python
Méthode de correspondance d'expression régulière
Expression régulière en Python
Quiz de confirmation d'expression régulière!
Notes sur l'expression régulière de la théorie Python
Julia Quick Note [04] Expression régulière
Manipulation d'expressions régulières par Python
Résumé de l'outil de vérification des expressions régulières
Décomposer le nom d'hôte avec co.jp avec une expression régulière
Remplacement de chaîne par une expression régulière Python
100 Language Processing Knock 2020: Chapitre 3 (expression régulière)
(Python) Remarques sur la lecture de HTML et l'utilisation d'expressions régulières
Rechercher une clé de dictionnaire pythondict par expression régulière