Maison développement back-end Tutoriel Python Comment apprendre les expressions régulières Python ?

Comment apprendre les expressions régulières Python ?

Jul 03, 2017 pm 03:21 PM
python 学习 表达式

Le module

re apporte la fonctionnalité complète des expressions régulières au langage Python. La

fonction de compilation génère un objet d'expression régulière basé sur un modèle chaîne et des arguments d'indicateur facultatifs. Cet objet dispose d'une série de méthodes pour la correspondance et le remplacement des expressions régulières.

re.match(pattern, string, flags=0) # 匹配成功返回一个匹配的对象,否则返回none
Copier après la connexion
1 import re2 print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配 (0, 3)3 print(re.match('com', 'www.runoob.com'))        # 不在起始位置匹配 None
Copier après la connexion
 1 import re 2 line = "cats are smarter than dogs" 3 matchObj = re.match(r'(.*) are (.*?) .*', line, re.M|re.I) 4 # matchObj = re.match(r'(.*) are (.*) .*', line, re.M|re.I)  # 结果也一样 5  6 if matchObj: 7     print("matchObj.group()", matchObj.group())     # cats are smarter than dogs 8     print("matchObj.group(1)", matchObj.group(1))   # cats 9     print("matchObj.group(2)", matchObj.group(2))   # smarter10 else:11     print("No match!!")
Copier après la connexion
 1 import re 2 line = "cats are smarter than dogs" 3 matchObj = re.match(r'(.*) are (.*?) (.*) .*', line, re.M|re.I) 4 # matchObj = re.match(r'(.*) are (.*) (.*) .*', line, re.M|re.I)  #这个结果也一样  5  6 if matchObj: 7     print("matchObj.group()", matchObj.group())     # cats are smarter than dogs 8     print("matchObj.group(1)", matchObj.group(1))   # cats 9     print("matchObj.group(2)", matchObj.group(2))   # smarter10     print("matchObj.group(3)", matchObj.group(3))   # than11 else:12     print("No match!!")
Copier après la connexion

Utilisez la fonction d'objet de correspondance group(num) ou groups() pour obtenir l'expression de correspondance.

groups() : renvoie un tuple contenant toutes les chaînes de groupe, de 1 au numéro de groupe contenu dans .

re.search analyse la chaîne entière et renvoie la première correspondance réussie.

print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配  (0, 3)print(re.search('com', 'www.runoob.com').span())  # 不在起始位置匹配  (11, 14)
Copier après la connexion
1 import re2 line = "Cats are smarter than dogs";3 searchObj = re.search(r'(.*) are (.*?) .*', line, re.M | re.I)4 if searchObj:5     print("searchObj.group() : ", searchObj.group())     # Cats are smarter than dogs   6     print("searchObj.group(1) : ", searchObj.group(1))   # Cats7     print("searchObj.group(2) : ", searchObj.group(2))   # smarter8 else:9     print("Nothing found!!")
Copier après la connexion
 1 line = "Cats are smarter than dogs" 2 matchObj = re.match(r'dogs', line, re.M | re.I) 3 if matchObj: 4     print("match --> matchObj.group() : ", matchObj.group()) 5 else: 6     print("No match!!") 7  8 matchObj = re.search(r'dogs', line, re.M | re.I) 9 if matchObj:10     print("search --> matchObj.group() : ", matchObj.group())11 else:12     print("No match!!")13 '''14 No match!!15 search --> matchObj.group() :  dogs16 '''
Copier après la connexion

re.match correspond uniquement au début de la chaîne si le début de la chaîne ne correspond pas à l'expression régulière, la correspondance échoue et la fonction renvoie Aucun while re ; .search correspond à la chaîne de caractères entière jusqu'à ce qu'une correspondance soit trouvée. Le module

1 re.search(pattern, string, flags=0)2 re.sub(pattern, repl, string, count=0, flags=0)
Copier après la connexion

re fournit re.sub pour remplacer les correspondances dans une chaîne.

Paramètres :

  • modèle : chaîne de modèle dans une expression régulière.

  • repl : La chaîne à remplacer, ou peut être une fonction .

  • string : La chaîne d'origine à rechercher et à remplacer.

  • count : Le nombre maximum de substitutions après la correspondance de modèles. La valeur par défaut est 0, ce qui signifie remplacer toutes les correspondances.


1 phone = "2004-959-559 # 国外电话号码"2 # 删除字符串中的Python注释3 num = re.sub(r'#.*$', "", phone)4 print("电话号码是:", num)        # 电话号码是: 2004-959-559 5 6 # 删除非数字(-)的字符串7 num = re.sub(r'\D', "", phone)8 print("电话号码是:", num)        # 电话号码是: 2004959559
Copier après la connexion

Le paramètre repl est une fonction

1 # 将匹配的数字乘于22 def double(matched):3     value = int(matched.group('value'))4     return str(value * 2)5 6 s = 'A23G4HFD567'7 print(re.sub('(?P<value>\d+)', double, s))
Copier après la connexion
re.I Rendre la correspondance insensible à la casse
re . L Effectuer une correspondance tenant compte des paramètres régionaux
re.M Correspondance multiligne, affectant ^ et $
re.S faire correspondre tous les caractères, y compris les sauts de ligne
re .U Analyse les caractères selon le jeu de caractères Unicode
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 w, W, b, B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
. Cet indicateur affecte w, W, b, B.
re Écrit pour être plus facile à comprendre.

re.I | re.M... Plusieurs indicateurs peuvent être spécifiés via OR au niveau du bit (|).

Modèle d'expression régulière

Les chaînes de modèles utilisent une syntaxe spéciale pour représenter une expression régulière : les lettres et les chiffres se représentent eux-mêmes.

^ 匹配字符串的开头
$ 匹配字符串的末尾。
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
[^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re* 匹配0个或多个的表达式。
re+ 匹配1个或多个的表达式。
re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
re{ n}  
re{ n,} 精确匹配n个前面表达式。
re{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
a| b 匹配a或b
(re) G匹配括号内的表达式,也表示一个组
(?imx) 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
(?-imx) 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。
(?: re) 类似 (...), 但是不表示一个组
(?imx: re) 在括号中使用i, m, 或 x 可选标志
(?-imx: re) 在括号中不使用i, m, 或 x 可选标志
(?#...) 注释.
(?= re) 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
(?! re) 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功
(?> re) 匹配的独立模式,省去回溯。
w 匹配字母数字及下划线
W 匹配非字母数字及下划线
s 匹配任意空白字符,等价于 [tnrf].
S 匹配任意非空字符
d 匹配任意数字,等价于 [0-9].
D 匹配任意非数字
A 匹配字符串开始
Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。c
z 匹配字符串结束
G 匹配最后匹配完成的位置。
b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
B 匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
n, t, 等. 匹配一个换行符。匹配一个制表符。等
1...9 匹配第n个分组的内容。
10 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。

Instance

1. Correspondance de caractères

python correspondant à "python".

Classe de caractères

[Pp]ython 匹配 "Python" 或 "python"
rub[ye] 匹配 "ruby" 或 "rube"
[aeiou] 匹配中括号内的任意一个字母
[0-9] 匹配任何数字。类似于 [0123456789]
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[a-zA-Z0-9] 匹配任何字母及数字
[^aeiou] 除了aeiou字母以外的所有字符
[^0-9] 匹配除了数字外的字符

3. Caractère spécial classe

. 匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
d 匹配一个数字字符。等价于 [0-9]。
D 匹配一个非数字字符。等价于 [^0-9]。
s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。
S 匹配任何非空白字符。等价于 [^ fnrtv]。
w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。

r indique que la chaîne est une chaîne brute sans échappement, permettant au compilateur d'ignorer les barres obliques inverses. les caractères d'échappement sont ignorés.

(.*) Le premier groupe correspondant, * signifie faire correspondre tous les caractères à l'exception des caractères de nouvelle ligne.

(.*?) Le deuxième groupe de correspondance, *? suivi de plusieurs points d'interrogation, représente le mode non gourmand, c'est-à-dire que seuls les caractères minimum qui remplissent les conditions correspondent

Le dernier .* Aucun Entouré de parenthèses, il n'est pas regroupé. L'effet de matching est le même que le premier, mais il n'est pas inclus dans le résultat du matching.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment télécharger Deepseek Xiaomi Comment télécharger Deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

Comment télécharger Deepseek Xiaomi? Recherchez "Deepseek" dans le Xiaomi App Store. Identifiez vos besoins (fichiers de recherche, analyse des données) et recherchez les outils correspondants (tels que les gestionnaires de fichiers, les logiciels d'analyse des données) qui incluent les fonctions Deepseek.

Comment lui demandez-vous Deepseek Comment lui demandez-vous Deepseek Feb 19, 2025 pm 04:42 PM

La clé de l'utilisation efficace de Deepseek est de poser clairement des questions: exprimer les questions directement et spécifiquement. Fournir des détails spécifiques et des informations générales. Pour des demandes complexes, plusieurs angles et opinions de réfutations sont inclus. Concentrez-vous sur des aspects spécifiques, tels que les goulots d'étranglement des performances dans le code. Gardez une réflexion critique sur les réponses que vous obtenez et faites des jugements en fonction de votre expertise.

Comment rechercher Deepseek Comment rechercher Deepseek Feb 19, 2025 pm 05:18 PM

Utilisez simplement la fonction de recherche fournie avec Deepseek. Cependant, pour les recherches impopulaires, les dernières informations ou problèmes qui doivent être prises en compte, il est nécessaire d'ajuster les mots clés ou d'utiliser des descriptions plus spécifiques, de les combiner avec d'autres sources d'informations en temps réel et de comprendre que Deepseek n'est qu'un outil qui nécessite Stratégies de recherche actives, claires et raffinées.

Comment programmer Deepseek Comment programmer Deepseek Feb 19, 2025 pm 05:36 PM

Deepseek n'est pas un langage de programmation, mais un concept de recherche profonde. La mise en œuvre de Deepseek nécessite une sélection en fonction des langues existantes. Pour différents scénarios d'application, il est nécessaire de choisir la langue et les algorithmes appropriés et de combiner la technologie d'apprentissage automatique. La qualité du code, la maintenabilité et les tests sont cruciaux. Ce n'est qu'en choisissant le bon langage de programmation, les algorithmes et les bons outils en fonction de vos besoins et de l'écriture de code de haute qualité que Deepseek peut être mis en œuvre avec succès.

Comment utiliser Deepseek pour régler les comptes Comment utiliser Deepseek pour régler les comptes Feb 19, 2025 pm 04:36 PM

Question: Deepseek est-il disponible pour la comptabilité? Réponse: Non, il s'agit d'un outil d'exploration de données et d'analyse qui peut être utilisé pour analyser les données financières, mais elle n'a pas les fonctions de génération de comptabilité et de génération de rapports des logiciels comptables. L'utilisation de Deepseek pour analyser les données financières nécessite de l'écriture de code pour traiter les données avec une connaissance des structures de données, des algorithmes et des API profonds pour considérer les problèmes potentiels (par exemple, les connaissances en programmation, les courbes d'apprentissage, la qualité des données)

Comment accéder à Deepseekapi - Deepseekapi Access Call Tutoriel Comment accéder à Deepseekapi - Deepseekapi Access Call Tutoriel Mar 12, 2025 pm 12:24 PM

Explication détaillée de Deepseekapi Access and Call: Quick Start Guide Cet article vous guidera en détail comment accéder et appeler Deepseekapi, vous aidant facilement à utiliser des modèles d'IA puissants. Étape 1: Obtenez la clé de l'API pour accéder au site officiel Deepseek et cliquez sur la "plate-forme ouverte" dans le coin supérieur droit. Vous obtiendrez un certain nombre de jetons gratuits (utilisés pour mesurer l'utilisation de l'API). Dans le menu de gauche, cliquez sur "Apikeys" puis cliquez sur "Créer Apikey". Nommez votre apikey (par exemple, "test") et copiez immédiatement la clé générée. Assurez-vous d'enregistrer correctement cette clé, car elle ne sera affichée qu'une seule fois

Mise à jour majeure de Pi Coin: PI Bank arrive! Mise à jour majeure de Pi Coin: PI Bank arrive! Mar 03, 2025 pm 06:18 PM

Pinetwork est sur le point de lancer Pibank, une plate-forme bancaire mobile révolutionnaire! Pinetwork a publié aujourd'hui une mise à jour majeure sur Elmahrosa (face) Pimisrbank, appelée Pibank, qui intègre parfaitement les services bancaires traditionnels avec des fonctions de crypto-monnaie de pignon (prend en charge l'échange entre les Fiat Currency tels que le Dollar, l'Euro, Usdt, Usdc, Ripiah avec des crypto-monnaies. Quel est le charme de Pibank? Découvrons! Les principales fonctions de Pibank: gestion unique des comptes bancaires et des actifs de crypto-monnaie. Soutenez les transactions en temps réel et adoptez les biospécies

Quels sont les outils de découpage d'IA actuels ? Quels sont les outils de découpage d'IA actuels ? Nov 29, 2024 am 10:40 AM

Voici quelques outils de découpage d'IA populaires : TensorFlow DataSetPyTorch DataLoaderDaskCuPyscikit-imageOpenCVKeras ImageDataGenerator

See all articles