Python—re モジュールと通常の紹介

I.はじめに

正規表現は文字列抽出のための一連のルールです。このルールを満たす文字列と一致するように、正規表現内の特定の構文を使用してこのルールを表現します。正規表現は Python だけでなく他の言語でも普遍的です。

Python の re モジュールは正規表現の機能を提供しており、文字列の一致に使用できる一般的に使用される 4 つのメソッド (match、search、findall) があります。

2. 一般的に使用される規則的なマッチング ルール

単一文字の一致

キャラクター 説明
改行を除く任意の 1 文字と一致します \n
[ ] [ ]内にリストされている文字と一致します
\d 数字と一致します。[0-9]に相当します。
\D 数字以外の一致
\s 空白文字、つまりタブキーと一致します
\S 空白以外の文字に一致します
\w 単語文字、a ~ z、0 ~ 9、およびアンダースコア_と一致します。
\W 単一文字以外の文字と一致する

数量を示します:

キャラクター 関数
+ 直前の部分式と 1 回以上一致します。+ 文字と一致するには、\+ を使用します
* 直前の部分式と 0 回以上一致します。* 文字と一致するには、\* を使用します
? 先行する部分式と 0 回または 1 回一致するか、非貪​​欲修飾子を指定します。? 文字に一致するには、? を使用します。
{n} n は、n 回出現する文字と一致する非負の整数です。たとえば、「o{2}」は「Bob」の「o」とは一致しませんが、「food」の両方の「o」には一致します。
{n.} 前の文字の少なくとも n 回の出現と一致します
{m、n} 前の文字と m 回から n 回一致します

境界を一致させる:

キャラクター 関数
^ 文字列の先頭と一致します
$ 文字列の末尾に一致します
\b 単語の境界に一致する
\B 単語以外の境界に一致します

一致グループ:

キャラクター 説明
| 置換の場合は、「m|food」が「m」または「food」と一致するように、「or」演算子が置換演算子よりも優先されます。「mood」または「food」と一致させるには、括弧を使用して部分式を作成し、「(m|f)ood」となります。
(アブ) 括弧内の文字をグループとして扱います
\番号 分子に一致する文字列を引用符で囲みます
(?P) グループの別名
(?P=名前) エイリアス名の分子が適用される文字列

3. reモジュールのよく使われるマッチング方法

1、re.match()

re.match() は文字列の先頭から一致する必要があります。match メソッドは、文字列の先頭からパターンを照合しようとします。先頭と一致しない場合、match() は何も返しません。

re.match() メソッドは、一致するコンテンツではなく、一致するオブジェクトを返します。コンテンツを返す必要がある場合は、group() を呼び出す必要があります。一致結果の位置はspan()を呼び出すことで取得できます。また、開始位置から一致しない場合、他の部分に一致する必要があるコンテンツが含まれている場合でも、 re.match() は None を返します。

主なパラメータは次のとおりです。

re.match(pattern, string)
# pattern     匹配的正则表达式
# string      要匹配的字符串

例:

#匹配3个任意字符,并通过列表返回
import re
text = "Python is the best language in the world. "
res = re.match('Py...',text) #匹配到的内容为为Pytho,返回一个res对象
res1= re.match(r'\d...',text) #match必须从头开始匹配,text开头不为数字,返回none

2、リサーチ()

match と同様に、文字列から検索します。どちらも一致するオブジェクトを返しますが、一致するコンテンツを直接返しません。

3、re.findall()

文字通り、findall が一致する文字をすべて検索し、リストで返すことであることがわかります。

例:

#匹配一个或多个数字
import re
text = "Please contact Teacher Cheng (18390904289) or Teacher Li (17256892366)."

res= re.match(r'\d+',text) #匹配到两个手机号码,通过列表返回。

4、re.sub()

文字列内で一致するデータをすべて検索して置換します。

関連パラメータ:

re.sub(替换的数据,替换成什么,要替换的数据所在的地方)

例:

import re
text = "Python is the best language in the world. "
res = re.sub("Python","PHP",text)
print(res)  #输出结果为:PHP is the best language in the world.

5、re.split()

コンテンツは、一致したペア文字列に基づいて分割されます。リストを返します。

例:

import re
s = "itcase,java:php-php3;html"
print(re.split(r",",s))           #以,号进行分割
#返回内容:["itcase","java:php-php3;html"]

4. 共通のマッチング要件

一致する電子メール アカウント:

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

携帯電話番号を一致させる:

^1(3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8[0-9]|9[0-9])\d{8}$

一致する IP アドレス:

^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$

一致する URL URL:

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

18 桁の ID 番号を照合します。

^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$

中国語の文字と一致する:

/^((?![\u3000-\u303F])[\u2E80-\uFE4F]|\·)*(?![\u3000-\u303F])[\u2E80-\uFE4F](\·)*$/

おすすめ

転載: blog.csdn.net/qq_45590334/article/details/129142963