Caractéristiques des modules d'expressions régulières qui sont souvent utilisés personnellement en Python

J'oublie souvent, mais le Document officiel contient trop de texte et il est difficile de le vérifier à chaque fois, c'est donc un mémorandum. ,. Nous prévoyons d'en ajouter d'autres au besoin.

import re

A propos, notez que from sympy import * se traduira par une fonction re qui renvoie la partie réelle.

Match objet

Pour retirer la partie correspondante ...

filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'([\w\.-]+?)\.(\w+)$', filename)
print(m.group(0)) #Tout le match(m.group()Équivalent à?)
print(m.group(1)) #1er groupe
print(m.group(2)) #Deuxième groupe
print(m.groups()) #Tapez sur tout le groupe

out


Back_in_the_U.S.S.R.m4a
Back_in_the_U.S.S.R
m4a
('Back_in_the_U.S.S.R', 'm4a')

Nommez le groupe avec (? P <groupname>) et accédez à partir du mot-clé.

filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'(?P<basename>[\w\.]+?)\.(?P<ext>\w+)$', filename)
print(m.group('basename')) #(?P<basename> )Chaîne qui correspond
print(m.group('ext')) #(?P<ext> )Chaîne qui correspond
print(m.groupdict()) #Groupes nommés dans le dictionnaire

out


Back_in_the_U.S.S.R
m4a
{'basename': 'Back_in_the_U.S.S.R', 'ext': 'm4a'}

Utilisez la chaîne correspondante pour le remplacement

Par exemple, pour remplacer \ ruby {méthode de retour} {kibyuho} dans $ \ LaTeX $ par<ruby> méthode de dévotion <rt> kibyuho </ rt> </ ruby>...

print(re.sub(r'\\ruby\{(\w+)\}\{(\w+)\}',
             r'<ruby>\1<rt>\2</rt></ruby>',
             r'\ruby{apocalypse}{Kibuho}'))

out


<ruby>apocalypse<rt>Kibuho</rt></ruby>

Utilisez un groupe nommé avec (? P <groupname>) Lors du référencement, utilisez\ g <groupname>.

print(re.sub(r'\\ruby\{(?P<rb>\w+)\}\{(?P<rt>\w+)\}',
             r'<ruby>\g<rb><rt>\g<rt></rt></ruby>',
             r'\ruby{apocalypse}{Kibuho}'))

out


<ruby>apocalypse<rt>Kibuho</rt></ruby>

C'est déroutant avec la balise html, mais j'ai obtenu le même résultat.

Lister toutes les pièces correspondantes

Pour récupérer tout le contenu de l'élément HTML ʻemou de l'élémentstrong` ...

src = r'<em>Théorème de choix</em>En supposant, dans n'importe quel ensemble<strong>Vous pouvez passer la commande</strong>.'
re.findall(r'<(em|strong)>(.*?)</\1>', src)

out


[('em', 'Théorème de choix'), ('strong', 'Vous pouvez passer la commande')]

Remplacer en passant la pièce correspondante à la fonction

Comment changer en quelque sorte cm en m dans le texte ...

def cm2m(m): #Préparer une fonction qui prend un objet de correspondance comme argument
    value = m.group(1)
    return str(float(value)/100) + 'm'
print(re.sub(r'(\d+)cm', cm2m, '271cm +314 cm est 585 cm.'))

out


2.71m + 3.14m est 5.C'est 85m.

Je me demande si lambda est bon pour un traitement simple qui ne nécessite pas la définition d'une fonction.

print(re.sub(r'(\d+)cm', lambda m: str(float(m.group(1))/100) + 'm', '271cm +314 cm est 585 cm.'))

out


2.71m + 3.14m est 5.C'est 85m.

Crochets imbriqués

Utilisez la récurrence. Cependant, comme c'est une fonction que le standard «re» n'a pas, utilisez «regex». S'il n'est pas installé, utilisez pip install regex etc. Ce qui suit correspond au \ frac {} {} de $ \ LaTeX $ (peut-être).

import regex
pattern_frac = r'\\frac(?<rec>\{(?:[^{}]+|(?&rec))*\}){2}'
m = regex.search(pattern_frac, r'1 + \frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}')
print(m.group())

out


\frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}

Recommended Posts

Caractéristiques des modules d'expressions régulières qui sont souvent utilisés personnellement en Python
Expression régulière en Python
Utiliser l'expression let en Python
Un modèle personnellement utilisé pour créer Discord BOT en Python (Notes)
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
Utiliser l'impression dans l'expression lambda Python2
Match de début / fin dans l'expression régulière python
Comment utiliser les expressions régulières en Python
Un mémo que j'ai écrit un tri rapide en Python
[Note complète] Une collection de codes que j'utilise souvent mais dont je ne me souviens pas
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Parlez des fonctionnalités dont les pandas et moi étions en charge dans le projet
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
Résumé de l'utilisation de MNIST avec Python
Utilisez diverses fonctionnalités de rabbimq avec python pika
J'ai touché certaines des nouvelles fonctionnalités de Python 3.8 ①
Nom de groupe symbolique d'expression régulière en Python / Ruby
[Question] Que se passe-t-il si vous utilisez% en python?
Bases de l'écran d'entrée / sortie en utilisant tkinter en python3
J'ai essayé de résumer comment utiliser matplotlib de python
Une collection de code souvent utilisée dans Python personnel
Importez / rechargez dynamiquement les modules qui ont changé dans Python
Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python
Une doublure qui produit 1000000 chiffres de rapport de circonférence avec Python
Utilisons les données ouvertes de "Mamebus" en Python
J'ai essayé de résumer comment utiliser les pandas de python
Modules pouvant passer par le shell en Python
expression canonique python ou mémo d'objet correspondant
Je veux utiliser le jeu de données R avec python
Liste des modules python
Expression régulière dans regex.h
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
mémo d'expression régulière python
Utiliser le profileur en Python
python> lien> Commentaire de mi-ligne en Python?> On m'a dit qu'il était préférable d'utiliser des arguments nommés.
traitement python3 qui semble utilisable dans paiza
python Extraction de condition de la liste que j'oublie souvent
Python --Trouvez le nombre de groupes dans l'expression regex
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai mesuré différentes méthodes de communication inter-processus en multitraitement de python3
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Je veux connaître la nature de Python et pip
Un mémorandum que vous utiliserez souvent avec Selenium en Python
Reproduire l'expression canonique Python r '\ w (? U)' en JavaScript
Un ensemble de fichiers de script qui font wordcloud avec Python3
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
[Python3] Liste des sites auxquels j'ai fait référence lorsque j'ai lancé Python
Voyons comment utiliser def en python
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Notes sur l'expression régulière de la théorie Python