Python正则表达式
正则表达式是搜索、替换和解析复杂字符串的一种强大而标准的方法,Python中的正则相关的东西全在re模块下。
1 常用的匹配
^匹配字符串的开始
$匹配字符串的结尾
\b匹配一个单词的边界
\d匹配任意数字
\D匹配任意非数字字符
x?匹配一个可选的x(匹配1次或0次x字符)
x*匹配0次或多次x
x+匹配1次或多次x
x{n,m}至少n次,至多m次x
(a|b|c)要么匹配a,要么匹配b,要么匹配c
(x)一般情况下表示一个记忆组,你可以利用re.search函数返回对象的groups()函数来获取它的值
2 一般用途
#------------------------------------------------------------------------------- # coding: utf-8 # Purpose:正则表达式 # # Author: zdk # # Created: 26/02/2013 # Copyright: (c) zdk 2013 #------------------------------------------------------------------------------- import re if __name__ == '__main__': addr = "100 BROAD ROAD APT.3" print(re.sub("ROAD","RD",addr)) # 100 BRD RD APT.3 print(re.sub(r"\bROAD\b","RD",addr)) # 100 BROAD RD APT.3 pattern = ".*B.*(ROAD)?" print(re.search(pattern,"ROAD")) #None print(re.search(pattern,"B")) #<_sre.SRE_Match object at 0x0230F020><span style="background-color:#FAFAFA;font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;font-size:1em;line-height:1.5;"> </span>
(1)re.sub("ROAD","RD",addr) 利用re.sub函数对字符串addr进行搜索,满足表达式"ROAD"的用“RD”替换
(2)re.sub(r"\bROAD\b","RD",addr) ,“\b”含义是“单词的边界”,在Python中,由于字符“\”在字符串中必须转义,这会变得非常麻烦,所以Python用前缀r表示字符串中的所有字符都不转义。
(3)re.search(pattern,"ROAD") re模块有一个search函数,该函数有两个参数,一个是正则表达式,一个是字符串,search函数返回一个拥有多种方法可以描述这个匹配的对象,如果没有发现匹配,则返回None。
3 松散正则表达式
上面均是“紧凑”类型的表达式,它比较难以阅读,即使现在清楚表达式的含义,也不能保证几个月后还能记得。所以Python允许用户利用所谓的松散正则表达式来完成内联文档的需要,和一般的表达式有以下两个方面的主要区别
忽略空白符。空格符、制表符、回车符不匹配它们自身(如果你想在松散正则表达式中匹配一个空格符,你不须在它前面添加一个反斜杠符号对它进行转义)
忽略注释。和普通的Python代码一样,注释开始于#符号,结束于行尾。
#松散带有内联注释的正则表达式 pattern = """ ^ # begin of string M{0,3} # 0 to 3 M (CM|CD|D?C{0,3}) #CM or CD or D or D 0 to 3 C $ #end of string """ print(re.search(pattern,"MCM",re.VERBOSE)) #<_sre.SRE_Match object at 0x021BAF60> print(re.search(pattern,"M99",re.VERBOSE)) #None
(1)当使用松散正则表达式时,最重要的一件事就是:必须传递一个额外的参数re.VERBOSE,它是re模块的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。pattern的空格和注释都是被忽略的,但同时具有更好的可读性。
4 个例研究:解析电话号码
必须匹配如下电话号码:
800-555-1212
800 555 1212
800.555.1212
(800)555-1212
1-800-555-1212
800-555-1212-1234
800-555-1212x1234
800-555-1212 ext.1234
work 1-(800) 555,1212 #1234
格式比较多,我们需要知道的是800为区号,干线号为555,电话号的其他数字为1212,对于有分机号的,我们需要知道分机号为1234
phonePattern = re.compile(r''' # don't match beginging of string (\d{3}) # 3 digits \D* #any number of non-digits (\d{3}) # 3 digits \D* #any number of non-digits (\d{4}) # 4 digits \D* #any number of non-digits (\d*) #any number of digits ''',re.VERBOSE) print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')
print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')
(1)一个松散正则表达式如上, 首先匹配3个数字区号(不一定从第一个字符开始,所以没有用^),接着后面匹配任意多个非数字的字符,接着匹配3个数字干线号,接着匹配任意多个非数字的字符,接着匹配4个数字号码,接着匹配任意多个非数字的字符,接着匹配任意多个数字的分机号,然后用groups函数分组,得到正确的电话号码。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Cet article explique comment utiliser la belle soupe, une bibliothèque Python, pour analyser HTML. Il détaille des méthodes courantes comme find (), find_all (), select () et get_text () pour l'extraction des données, la gestion de diverses structures et erreurs HTML et alternatives (Sel

Cet article compare TensorFlow et Pytorch pour l'apprentissage en profondeur. Il détaille les étapes impliquées: préparation des données, construction de modèles, formation, évaluation et déploiement. Différences clés entre les cadres, en particulier en ce qui concerne le raisin informatique

Cet article guide les développeurs Python sur la construction d'interfaces de ligne de commande (CLI). Il détaille à l'aide de bibliothèques comme Typer, Click et Argparse, mettant l'accent sur la gestion des entrées / sorties et promouvant des modèles de conception conviviaux pour une meilleure convivialité par la CLI.

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

L'article traite du rôle des environnements virtuels dans Python, en se concentrant sur la gestion des dépendances du projet et l'évitement des conflits. Il détaille leur création, leur activation et leurs avantages pour améliorer la gestion de projet et réduire les problèmes de dépendance.

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.
