L'expression régulière (regex) est destinée à extraire les informations requises de tout texte basé sur des modèles. Ils sont également largement utilisés pour manipuler des textes basés sur des modèles, ce qui conduit au prétraitement du texte, et sont très utiles pour mettre en œuvre des compétences numériques telles que Traitement du langage naturel (PNL) .
Cet article montre comment utiliser l'expression régulière pour remplacer des modèles en fournissant plusieurs exemples, chaque exemple étant un scénario unique en soi. Il est très nécessaire de comprendre lere.sub()>
méthode dere>
(expression régulière) pour comprendre les solutions données.
Lere.sub()>
La méthode effectue une recherche globale et un remplacement global sur la chaîne donnée. Il est utilisé pour remplacer un modèle spécifique dans la chaîne. Il y a au total 5 arguments de cette fonction.
Syntaxe: re.sub(modèle, repl, chaîne, nombre=0, drapeaux=0)
Linux quiParamètres:
modèle – le modèle qui doit être recherché et remplacé
repl – la chaîne par laquelle le modèle doit être remplacé
string – le nom de la variable dans laquelle le modèle est stocké
count – nombre de caractères jusqu'à lequel la substitution sera effectuée
flags – il est utilisé pour modifier la signification du modèle regex
count>
etflags>
sont des arguments facultatifs.
Exemple 1 : Substitution d'un modèle de texte spécifique
Dans cet exemple, un modèle de texte donné sera recherché et remplacé dans une chaîne. L'idée est d'utiliser la forme très normale dure.sub()>
méthode avec seulement les 3 premiers arguments.
Ci-dessous la mise en œuvre.
# Python implementation of substituting a> # specific text pattern in a string using regex> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence1> => 'It is raining outside.'> > > # replacing text 'raining' in the string> > # variable sentence1 with 'sunny' thus> > # passing first parameter as raining> > # second as sunny, third as the> > # variable name in which string is stored> > # and printing the modified string> > print> (re.sub(r> 'raining'> ,> 'sunny'> , sentence1))> > > # a string variable> > sentence2> => 'Thank you very very much.'> > > # replacing text 'very' in the string> > # variable sentence2 with 'so' thus> > # passing parameters at their> > # appropriate positions and printing> > # the modified string> > print> (re.sub(r> 'very'> ,> 'so'> , sentence2))> > # Driver Code:> substitutor()> |
>
>Sortir:
It is sunny outside. Thank you so so much.>
Peu importe combien de fois le motif requis est présent dans la chaîne, le
re.sub()>
la fonction les remplace tous par le modèle donné. C’est pourquoi les deux « très » sont remplacés par « donc » dans l’exemple ci-dessus.
Exemple 2 : Remplacement d'un jeu de caractères par un caractère spécifique
La tâche consiste à remplacer un jeu de caractères par un caractère donné. Un jeu de caractères signifie une plage de caractères. Dans lere.sub()>
méthode, un jeu de caractères est écrit entre [ ] (crochets).
Dans cet exemple, le jeu de caractères minuscules, c'est-à-dire [a-z], sera remplacé par le chiffre 0. Vous trouverez ci-dessous l'implémentation.
jvm
# Python implementation of substituting> # a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => '22 April is celebrated as Earth Day.'> > > # replacing every lower case characters> > # in the variable sentence with 0 and> > # printing the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence))> > # Driver Code:> substitutor()> |
>
>Sortir:
22 A0000 00 0000000000 00 E0000 D00.>
S'il est nécessaire de remplacer les jeux de caractères minuscules et majuscules, nous devons introduire le jeu de caractères majuscules de cette manière : [a-zA-Z] ou le efficace La meilleure façon de le faire est d'utiliser des drapeaux.
Exemple 3 : substitution insensible à la casse d'un jeu de caractères par un caractère spécifique
Dans cet exemple, les caractères minuscules et majuscules seront remplacés par le caractère donné. Avec l'utilisation de drapeaux , cette tâche peut être réalisée très facilement.
Lere.I>
le drapeau signifie re. Ignorer la cas . En introduisant ce drapeau dans lere.sub()>
méthode et en mentionnant n’importe quel jeu de caractères, c’est-à-dire minuscule ou majuscule, la tâche peut être complétée.
Ci-dessous la mise en œuvre.
# Python implementation of case-insensitive substitution> # of a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => '22 April is celebrated as Earth Day.'> > > # replacing both lowercase and> > # uppercase characters with 0 in> > # the variable sentence by using> > # flag and printing the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence, flags> => re.I))> > # Driver Code:> substitutor()> |
>
>Sortir:
22 00000 00 0000000000 00 00000 000.>
Exemple 4 : Effectuer une substitution jusqu'à un certain nombre de caractères
Dans cet exemple, la substitution portera sur un nombre spécifique de caractères et non sur la chaîne entière. Pour effectuer ce type de substitution, lere.sub()>
la méthode a un argumentcount>
.
En fournissant une valeur numérique à cet argument, le nombre de caractères sur lesquels la substitution aura lieu peut être contrôlé. Ci-dessous la mise en œuvre.
liste chaînée java
# Python implementation to perform substitution> # up to a certain number of characters> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # a string variable> > sentence> => 'Follow your Passion.'> > > # case-insensitive substitution> > # on variable sentence upto> > # eight characters and printing> > # the modified string> > print> (re.sub(r> '[a-z]'> ,> '0'> , sentence,> 8> , flags> => re.I))> > # Driver Code:> substitutor()> |
>
>Sortir:
000000 00ur Passion.>
Exemple 5 : Substitution à l'aide d'une classe de caractères abrégés et prétraitement du texte
Le module Regex fournit de nombreuses classes de caractères abrégés pour les jeux de caractères très courants lors du prétraitement du texte. L'utilisation d'une classe de caractères abrégés permet d'écrire un code efficace et de réduire le besoin de mémoriser la plage de chaque jeu de caractères.
java convertir un entier en chaîne
Pour obtenir une explication détaillée de la classe de caractères abrégés et comment écrire une expression régulière en python pour le prétraitement du texte, cliquez sur ici . Voici quelques-unes des classes de caractères abrégés couramment utilisées :
w : correspond aux caractères alphanumériques
W : correspond aux caractères non alphanumériques tels que @, #, ‘, +, %, –
d : correspond aux caractères numériques
s : correspond aux caractères d'espacement blancsSignification d'une syntaxe :
ajout d'un symbole plus (+) après une classe ou un ensemble de caractères : répétition de la classe ou de l'ensemble de caractères précédent au moins 1 ou plusieurs fois.ajout d'un symbole astérisque (*) après une classe ou un ensemble de caractères : répétition de la classe ou de l'ensemble de caractères précédent au moins 0 fois ou plus.
ajout d'un symbole caret(^) avant une classe ou un ensemble de caractères : la position correspondante est déterminée pour cette classe de caractères ou définie au début de la chaîne.
ajout d'un symbole dollar ($) après une classe ou un ensemble de caractères : la position correspondante est déterminée pour cette classe de caractères ou définie à la fin de la chaîne.
Cet exemple montre l'utilisation des classes de caractères abrégés mentionnées pour la substitution et le prétraitement du texte afin d'obtenir des chaînes propres et sans erreur. Ci-dessous la mise en œuvre.
# Python implementation of Substitution using> # shorthand character class and preprocessing of text> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > > # list of strings> > S> => [> '2020 Olympic games have @# been cancelled'> ,> > 'Dr Vikram Sarabhai was +%--the ISRO’s first chairman'> ,> > 'Dr Abdul Kalam, the father of India's missile programme'> ]> > > # loop to iterate every element of list> > for> i> in> range> (> len> (S)):> > > # replacing every non-word character with a white space> > S[i]> => re.sub(r> 'W'> ,> ' '> , S[i])> > > # replacing every digit character with a white space> > S[i]> => re.sub(r> 'd'> ,> ' '> , S[i])> > > # replacing one or more white space with a single white space> > S[i]> => re.sub(r> 's+'> ,> ' '> , S[i])> > > # replacing alphabetic characters which have one or more> > # white space before and after them with a white space> > S[i]> => re.sub(r> 's+[a-z]s+'> ,> ' '> , S[i], flags> => re.I)> > > # substituting one or more white space which is at> > # beginning of the string with an empty string> > S[i]> => re.sub(r> '^s+'> , '', S[i])> > > # substituting one or more white space which is at> > # end of the string with an empty string> > S[i]> => re.sub(r> 's+$'> , '', S[i])> > > # loop to iterate every element of list> > for> i> in> range> (> len> (S)):> > > # printing each modified string> > print> (S[i])> > # Driver Code:> substitutor()> |
>
>Sortir:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>