目次
正規表現モジュール
Python の正規表現
正規表現関数
findall() 関数
结束符
星号符
加号符
集合符号
或符
特殊序列
指定字符
指定开头结尾
匹配中间字符
匹配数字
匹配非数字
空格匹配
匹配非空格
匹配任意数字和字母
匹配任意非数字和字母
匹配结尾
集合套装
指定符范围匹配
匹配任意范围内小写字母
匹配对象
span函数
string函数
group函数
ホームページ バックエンド開発 Python チュートリアル Pythonの正規表現解析をまとめて整理する

Pythonの正規表現解析をまとめて整理する

Mar 29, 2022 pm 12:09 PM
python

この記事では、python に関する関連知識を提供し、主に Python 正規表現に関連する問題を紹介し、正規表現関数、メタキャラクター、特殊シーケンス、セット、セット、一致するオブジェクトなどについてまとめます。お役に立てれば。

Pythonの正規表現解析をまとめて整理する

推奨学習: python チュートリアル

正規表現の役割は何ですか? Web ページには大量のコンテンツがキャプチャされており、すべてを取得することはできません。必要なのはその一部だけであるため、正規表現を使用して必要なコンテンツと一致させる必要があります。

正規表現モジュール

Python には、正規表現を処理するために使用できる re という組み込みパッケージがあります。 re モジュールをインポートします:

import re
ログイン後にコピー

Python の正規表現

re モジュールをインポートした後、正規表現の使用を開始できます。
例: 文字列を検索して、「The」で始まり「Spain」で終わるかどうかを確認します:

import re

txt = "The rain in Spain"x = re.search("^The.*Spain$", txt)if x:
  print("匹配成功!")else:
  print("匹配失败")
ログイン後にコピー

実行:
Pythonの正規表現解析をまとめて整理する
もちろん、これはできません。これを今すぐ理解してください。 たとえば、私たちは段階的に教えるので、一度で空に到達することを教えません。

正規表現関数

findall() 関数

findall() 関数は、すべての一致を含むリストを返します。
例: すべての一致のリストを出力します。

import re

txt = "川川菜鸟啊菜鸟啊"x = re.findall("菜鸟", txt)print(x)
ログイン後にコピー

実行すると次の結果が返されます。
Pythonの正規表現解析をまとめて整理する
リストには、見つかった順序で一致が含まれます。一致するものが見つからない場合は、空のリストが返されます:

import re

txt = "菜鸟并不菜"x = re.findall("川川", txt)print(x)if (x):
  print("匹配成功了哟")else:
  print("找不到这个呀!")
ログイン後にコピー

実行すると次の結果が返されます:
Pythonの正規表現解析をまとめて整理する

##search() 関数

search() 関数は、一致する文字列を検索し、一致する場合は Match オブジェクトを返します。複数の一致がある場合は、一致した

first のみが返されます。 例: 文字列内の最初の空白文字を検索します:

import re

txt = "菜鸟 呢"x = re.search("\s", txt)print("第一个空格字符位于位置:", x.start())
ログイン後にコピー
実行結果:


Pythonの正規表現解析をまとめて整理する 一致するものが見つからない場合、None は次の値を返します:

import re

txt = "天上飞的是菜鸟"x = re.search("川川", txt)print(x)
ログイン後にコピー
戻り値:


Pythonの正規表現解析をまとめて整理する

split() 関数

split() 関数は、文字列が一致ごとに分割されたリストを返します。

例: 各空白文字で分割

import re

txt = "菜鸟 学 python"x = re.split("\s", txt)print(x)
ログイン後にコピー
実行すると次の結果が返されます:


Pythonの正規表現解析をまとめて整理する maxsplit パラメータを指定することで出現回数を制御できます
例: 次の位置のみ文字列を 1 つの出現箇所で分割します:

import re#Split the string at the first white-space character:txt = "飞起来 菜鸟 们"x = re.split("\s", txt, 1)print(x)
ログイン後にコピー
戻り値:


Pythonの正規表現解析をまとめて整理する

sub() function

The sub()関数は、一致したものを選択したテキストに置き換えます。

例: 置換のみを使用して実行

import re

txt = "学python就找川川菜鸟"x = re.sub("就", "只", txt)print(x)
ログイン後にコピー
:


Pythonの正規表現解析をまとめて整理する count パラメータを指定することで置換の数を制御できます:
たとえば、最初の 2 つを置換します。出現回数:

import re

txt = "学python就就就川川菜鸟"x = re.sub("就", "只", txt,2)print(x)
ログイン後にコピー
戻り値:


Pythonの正規表現解析をまとめて整理する

メタキャラクター

リスト記号

[] 一連の文字に対して使用します 例: #「a」と「m」の間のすべての小文字をアルファベット順で検索します

import re

txt = "apple chuanchuan "#按字母顺序查找“a”和“m”之间的所有小写字符x = re.findall("[a-m]", txt)print(x)
ログイン後にコピー
実行:


Pythonの正規表現解析をまとめて整理する

#エスケープ文字

*

は特殊なシーケンスを表します (特殊文字のエスケープにも使用できます) たとえば、すべての数字に一致します:

import re

txt = "我今年20岁了"#查找所有数字字符x = re.findall("\d", txt)print(x)
ログイン後にコピー
Run return :


Pythonの正規表現解析をまとめて整理する

任意の記号

. には任意の文字を使用できます (改行を除く)。 例: 「he」で始まり、その後に 2 文字 (任意) と「o」が続くシーケンスを検索します。

import re

txt = "hello world"#搜索以“he”开头、后跟两个(任意)字符和一个“o”的序列x = re.findall("he..o", txt)print(x)
ログイン後にコピー
実行すると次の結果が返されます:


Pythonの正規表現解析をまとめて整理する

開始記号

^ 記号は先頭と一致するために使用されます。

import re

txt = "川川菜鸟 飞起来了"x = re.findall("^川", txt)if x:
  print("哇,我匹配到了")else:
  print("哎呀,匹配不了啊")
ログイン後にコピー
実行:


Pythonの正規表現解析をまとめて整理する

结束符

$ 符号用于匹配结尾,例如:匹配字符串是否以“world”结尾

import re

txt = "hello world"#匹配字符串是否以“world”结尾x = re.findall("world$", txt)if x:
  print("匹配成功了耶")else:
  print("匹配不到哦")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

星号符

  • 星号符用于匹配零次或者多次出现。
import re

txt = "天上飞的是菜鸟,学python找川川菜鸟!"#检查字符串是否包含“ai”后跟 0 个或多个“x”字符:x = re.findall("菜鸟*", txt)print(x)if x:
  print("匹配到了!")else:
  print("气死了,匹配不到啊")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

加号符

+ 用于匹配一次或者多次出现
例如:检查字符串是否包含“菜鸟”后跟 1 个或多个“菜鸟”字符:

import re

txt = "飞起来了,菜鸟们!"#检查字符串是否包含“菜鸟”后跟 1 个或多个“菜鸟”字符:x = re.findall("菜鸟+", txt)print(x)if x:
  print("匹配到了!")else:
  print("烦死了,匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

集合符号

{} 恰好指定的出现次数
例如:检查字符串是否包含“川”两个

import re

txt = "川川菜鸟并不菜!"#检查字符串是否包含“川”两个x = re.findall("川{2}", txt)print(x)if x:
  print("匹配到了两次的川")else:
  print("匹配不到啊,帅哥")
ログイン後にコピー

返回:
Pythonの正規表現解析をまとめて整理する

或符

| 匹配两者任一
例如:匹配字符串菜鸟或者是我了

import re

txt = "菜鸟们学会python了吗?串串也是菜鸟啊!"x = re.findall("菜鸟|是我了", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配失败")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

特殊序列

指定字符

\A : 如果指定的字符位于字符串的开头,则返回匹配项。
例如:匹配以菜字符开头的字符

import re

txt = "菜鸟在这里"x = re.findall("\A菜", txt)print(x)if x:
  print("是的匹配到了")else:
  print("匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

指定开头结尾

\b 返回指定字符位于单词开头或结尾的匹配项 (开头的“r”确保字符串被视为原始字符串)。
例如:匹配爱开头

import re

txt = "爱你,川川"x = re.findall(r"\b爱", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する
又例如:匹配川结尾

import re

txt = "爱你,川川"x = re.findall(r"川\b", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配中间字符

\B 返回存在指定字符但不在单词开头(或结尾)的匹配项 (开头的“r”确保字符串被视为“原始字符串”)
比如我匹配菜鸟:

import re

txt = "我是菜鸟我是菜鸟啊"#检查是否存在“ain”,但不是在单词的开头:x = re.findall(r"\菜鸟", txt)print(x)if x:
  print("匹配到了嘛!!")else:
  print("匹配不到哇!")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する
但是你匹配结尾就会返回空,比如我匹配鸟:

import re

txt = "川川菜鸟"#检查是否存在“鸟”,但不是在单词的末尾:x = re.findall(r"鸟\B", txt)print(x)if x:
  print("匹配到了哦")else:
  print("找不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配数字

\d 返回字符串包含数字(0-9 之间的数字)的匹配项。
例如:

import re

txt = "我今年20岁了啊"#检查字符串是否包含任何位数(0-9的数字)x = re.findall("\d", txt)print(x)if x:
  print("哇哇哇,匹配到数字了")else:
  print("找不到哦")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配非数字

\D 返回字符串不包含数字的匹配项
例如:

import re

txt = "我今年20岁"#匹配任何非数字符号x = re.findall("\D", txt)print(x)if x:
  print("匹配到了,开心!")else:
  print("匹配不到,生气")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

空格匹配

\s 返回一个匹配字符串包含空白空间字符的匹配项。
例如:

import re

txt = "我 是 川 川 菜 鸟"#匹配任何空格字符x = re.findall("\s", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到啊")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配非空格

\S 返回字符串不包含空格字符的匹配项

import re

txt = "菜鸟是  我  了"#匹配任意非空字符x = re.findall("\S", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配任意数字和字母

返回一个匹配,其中字符串包含任何单词字符(从 a 到 Z 的字符,从 0 到 9 的数字,以及下划线 _ 字符)
例如:

import re

txt = "菜鸟啊 是串串呀"#在每个单词字符(从a到z的字符,0-9的数字)返回匹配项,以及下划线_字符):x = re.findall("\w", txt)print(x)if x:
  print("匹配到了啊")else:
  print("匹配不到哇")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配任意非数字和字母

返回字符串不包含任何单词字符的匹配项,在每个非单词字符中返回匹配(不在A和Z之间的字符。“!”,“?”空白位等)
例如:

import re

txt = "菜鸟 是 我嘛?我不信!!"#在每个非单词字符中返回匹配(不在A和Z之间的字符。“!”,“?”空白位等):x = re.findall("\W", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配结尾

\Z 如果指定的字符位于字符串的末尾,则返回匹配项。
例如:

import re

txt = "川川是菜鸟啊"x = re.findall("啊\Z", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配不到")
ログイン後にコピー

集合套装

指定符范围匹配

例如集合:[arn]

import re

txt = "The rain in Spain"x = re.findall("[arn]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")
ログイン後にコピー

匹配任意范围内小写字母

返回任何小写字符的匹配项,按字母顺序在 a 和 n 之间。
例如:

import re

txt = "hello wo r l d"x = re.findall("[a-n]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する
同样的道理,依次其它情况如下:

[^arn] 返回除 a、r 和 n 之外的任何字符的匹配项

[0123] 返回存在任何指定数字(0、1、2 或 3)的匹配项

[0-9] 返回 0 到 9 之间任意数字的匹配项

[0-5][0-9] 返回 00 到 59 中任意两位数的匹配项

[a-zA-Z] 按字母顺序返回 a 和 z 之间的任何字符的匹配,小写或大写

[+] 在集合中,+, *, ., |, (), $,{} 没有特殊含义,所以 [+] 的意思是:返回字符串中任意 + 字符的匹配项。这个我i举个例子:

import re

txt = "5+6=11"#检查字符串是否有任何 + 字符:x = re.findall("[+]", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

匹配对象

匹配对象是包含有关搜索和结果的信息的对象。注意:如果没有匹配,None将返回值,而不是匹配对象。
直接举个例子:
执行将返回匹配对象的搜索

import re#search() 函数返回一个 Match 对象:txt = "hello world"x = re.search("wo", txt)print(x)
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

Match 对象具有用于检索有关搜索和结果的信息的属性和方法:

span()返回一个包含匹配开始和结束位置的元组。
string返回传递给函数的字符串
group()返回字符串中匹配的部分
ログイン後にコピー

span函数

例如:打印第一个匹配项的位置(开始和结束位置)。正则表达式查找任何以大写“S”开头的单词:

import re#搜索单词开头的大写“S”字符,并打印其位置txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.span())
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する

string函数

例如:打印传递给函数的字符串

import re#返回字符串txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.string)
ログイン後にコピー

group函数

例如:打印字符串中匹配的部分。正则表达式查找任何以大写“S”开头的单词

import re#搜索单词开头的大写“w”字符,并打印该单词:txt = "hello world"x = re.search(r"\bw\w+", txt)print(x.group())
ログイン後にコピー

运行:
Pythonの正規表現解析をまとめて整理する
注意:如果没有匹配,None将返回值,而不是匹配对象。

推荐学习:python教程

以上がPythonの正規表現解析をまとめて整理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PythonインタープリターはLinuxシステムで削除できますか? PythonインタープリターはLinuxシステムで削除できますか? Apr 02, 2025 am 07:00 AM

Linux Systemsに付属するPythonインタープリターを削除する問題に関して、多くのLinuxディストリビューションは、インストール時にPythonインタープリターをプリインストールし、パッケージマネージャーを使用しません...

Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Apr 02, 2025 am 06:42 AM

Pythonプログラミングでカスタムデコレーターを使用する場合、Pylance Type検出問題解決策デコレーターは、行を追加するために使用できる強力なツールです...

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか? Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか? Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

Debian文字列は、複数のブラウザと互換性があります Debian文字列は、複数のブラウザと互換性があります Apr 02, 2025 am 08:30 AM

「DebianStrings」は標準的な用語ではなく、その特定の意味はまだ不明です。この記事は、ブラウザの互換性について直接コメントすることはできません。ただし、「DebianStrings」がDebianシステムで実行されているWebアプリケーションを指す場合、そのブラウザの互換性はアプリケーション自体の技術アーキテクチャに依存します。ほとんどの最新のWebアプリケーションは、クロスブラウザーの互換性に取り組んでいます。これは、次のWeb標準と、適切に互換性のあるフロントエンドテクノロジー(HTML、CSS、JavaScriptなど)およびバックエンドテクノロジー(PHP、Python、Node.jsなど)を使用することに依存しています。アプリケーションが複数のブラウザと互換性があることを確認するには、開発者がクロスブラウザーテストを実施し、応答性を使用する必要があることがよくあります

XMLの変更にはプログラミングが必要ですか? XMLの変更にはプログラミングが必要ですか? Apr 02, 2025 pm 06:51 PM

XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。

携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? 携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? Apr 02, 2025 pm 10:09 PM

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

XMLのコメントコンテンツを変更する方法 XMLのコメントコンテンツを変更する方法 Apr 02, 2025 pm 06:15 PM

小さなXMLファイルの場合、注釈コンテンツをテキストエディターに直接置き換えることができます。大きなファイルの場合、XMLパーサーを使用してそれを変更して、効率と精度を確保することをお勧めします。 XMLコメントを削除するときは注意してください。コメントを維持すると、通常、コードの理解とメンテナンスが役立ちます。高度なヒントは、XMLパーサーを使用してコメントを変更するためのPythonサンプルコードを提供しますが、特定の実装を使用するXMLライブラリに従って調整する必要があります。 XMLファイルを変更する際のエンコード問題に注意してください。 UTF-8エンコードを使用して、エンコード形式を指定することをお勧めします。

XMLをPDFに変換できるモバイルアプリはありますか? XMLをPDFに変換できるモバイルアプリはありますか? Apr 02, 2025 pm 08:54 PM

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

See all articles