ホームページ バックエンド開発 Python チュートリアル Pythonの正規表現を学ぶにはどうすればよいですか?

Pythonの正規表現を学ぶにはどうすればよいですか?

Jul 03, 2017 pm 03:21 PM
python 勉強 表現

re モジュールは、完全な 正規表現 機能を Python 言語にもたらします。

compile 関数は、パターン string とオプションのフラグ引数に基づいて 正規表現オブジェクト を生成します。このオブジェクトには、正規表現の一致と置換のための一連のメソッドがあります。

re.match(pattern, string, flags=0) # 匹配成功返回一个匹配的对象,否则返回none
ログイン後にコピー
1 import re2 print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配 (0, 3)3 print(re.match('com', 'www.runoob.com'))        # 不在起始位置匹配 None
ログイン後にコピー
 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!!")
ログイン後にコピー
 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!!")
ログイン後にコピー

group(num) または groups() 一致オブジェクト関数を使用して、一致式を取得します。

groups(): 1 から に含まれるグループ番号までのすべてのグループ文字列を含むタプルを返します。

re.search は文字列全体をスキャンし、最初に一致したものを返します。

print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配  (0, 3)print(re.search('com', 'www.runoob.com').span())  # 不在起始位置匹配  (11, 14)
ログイン後にコピー
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!!")
ログイン後にコピー
 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 '''
ログイン後にコピー

re.match は文字列の先頭のみと一致しますが、文字列の先頭が正規表現と一致しない場合、関数は None を返しますが、re.search は一致するものが見つかるまで文字列全体を照合します。

1 re.search(pattern, string, flags=0)2 re.sub(pattern, repl, string, count=0, flags=0)
ログイン後にコピー

re モジュールは、文字列内の一致を置換するための re.sub を提供します。

パラメータ:

  • pattern: 正規表現のパターン文字列。

  • repl: 置換される文字列は関数にすることもできます。

  • string : 検索および置換される元の文字列。

  • count: パターン マッチング後の置換の最大数は 0 で、これはすべての一致を置換することを意味します。


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
ログイン後にコピー
replパラメータは関数です

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))
ログイン後にコピー
re.I大文字と小文字を区別せずに一致させますre.Lロケールを意識したマッチングを行いますリ。 re.X

re.I | re.M... 複数のフラグをビット単位の OR (|) で指定できます。

正規表現パターン

パターン文字列は、特別な構文を使用して正規表現を表します。文字と数字はそれ自体を表します。

文字を解析します。このフラグは、w、W、b、B に影響します。
このフラグにより​​、より柔軟な形式が提供されるため、正規表現の記述が容易になります。
^ は文字列の先頭と一致します
$ は文字列の末尾と一致します。
. は、改行文字を除く任意の文字に一致します。 re.DOTALL フラグが指定されている場合、改行文字を含む任意の文字に一致します。
[...] は、個別にリストされた文字のグループを表すために使用されます: [amk] は、'a'、'm'、または 'k' に一致します
[^...] 存在しません [] 内の文字: [^abc] は、a、b、c 以外の文字と一致します。
re* は 0 個以上の式と一致します。
re+ は 1 つ以上の式と一致します。
re? 貪欲でない方法で、前の正規表現で定義された 0 または 1 個のフラグメントと一致します
re{ n}
re{ n,} 前の正規表現と完全に一致します。
re{ n, m} は、前の正規表現で定義されたフラグメントの n 倍から m 倍の貪欲な方法で一致します
a b は a または b と一致します
(re) G は括弧内の式と一致し、グループ
(?imx) も表します。正規表現には、i、m、または x の 3 つのオプションのフラグが含まれます。括弧内の領域にのみ影響します。
(?-imx) i、m、または x のオプションのフラグをオフにする正規表現。括弧内の領域にのみ影響します。
(?: re) Like (...) ですが、グループを表しません
(?imx: re) 括弧内に i、m、または x のオプションのフラグを使用します
(?-imx: re) かっこ内の i、m、x のオプションのフラグは使用しないでください
(?#...) Comments.
(?= re) Forward正の区切り文字。 ... で示される、含まれている正規表現が現在の位置と正常に一致する場合は成功し、そうでない場合は失敗します。しかし、含まれている式が試行されると、マッチング エンジンはまったく改善されず、パターンの残りの部分は依然として区切り文字の右側を試行する必要があります。
(?! re) 前方負の区切り文字。正の区切り文字とは反対に、含まれる式が文字列の現在位置で一致しない場合に成功します
(?> re) 独立したパターンが一致したため、バックトラッキングの必要がなくなります。
w は英数字とアンダースコアに一致します
W は英数字以外とアンダースコアに一致します
s は[tnrf]に相当する任意の空白文字に一致します
S の試合空でない文字
d は、[0-9]に相当する任意の数値と一致します。
D は、数値以外の任意の文字と一致します
A は、文字列の先頭と一致します
Z は文字列の末尾に一致します。改行がある場合は、改行の前の文字列の末尾のみが一致します。 c
z は文字列の末尾に一致します
G は最後の一致が完了した位置に一致します。
b は、単語とスペースの間の位置を指す単語境界に一致します。たとえば、「erb」は「never」の「er」と一致しますが、「verb」の「er」とは一致しません。
B 単語以外の境界と一致します。 「erB」は「動詞」の「er」と一致しますが、「never」の「er」とは一致しません。
n、t など。 は改行文字と一致します。タブ文字と一致します。 n 番目のグループのコンテンツと一致するまで
1...9 を待ちます。
10 は、n 番目のグループの内容が一致する場合、その内容と一致します。それ以外の場合は、8 進数の文字コードの表現を指します。

1. 文字の一致

python は「python」と一致します。

2. 文字クラス

[Pp]ythonr ub [ye][aeiou][0-9][^aeiou][^0-9]

3. 特殊文字クラス

は「Python」または「python」と一致します
は「ruby」または「rube」と一致します
は角括弧内の任意の文字と一致します
は任意の数字と一致します。 [0123456789]に類似& ; 数字
aeiou 文字を除くすべての文字
は数字を除く文字と一致します
. 「n」を除く任意の 1 文字と一致します。 「n」を含む任意の文字と一致するには、「[.n]」のようなパターンを使用します。
d は数字と一致します。 [0-9]に相当します。
D は、数字以外の文字と一致します。 [^0-9] と同等。
s は、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 【fnrtv】に相当。
S は、空白以外の文字と一致します。 [^ fnrtv] に相当します。
w は、アンダースコアを含む任意の単語文字に一致します。 「[A-Za-z0-9_]」と同等。
W は、単語以外の文字と一致します。 「[^A-Za-z0-9_]」と同等。

r は、文字列がエスケープされていない生の文字列であることを示し、コンパイラーがバックスラッシュ、つまりエスケープ文字を無視できるようにします。

(.*)最初に一致するグループ * は、改行文字を除くすべての文字と一致することを意味します。

(.*?) 2 番目の一致グループ *? に続く複数の疑問符は、非貪欲モードを表します。つまり、条件を満たす最小限の文字のみが一致します。

最後の .* は一致しません。括弧で囲まれているため、グループ化ではなく、一致します。効果は最初のものと同じですが、一致結果には含まれません。

以上が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)

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法は? Xiaomi App Storeで「Deepseek」を検索します。ニーズ(検索ファイル、データ分析)を特定し、DeepSeek関数を含む対応するツール(ファイルマネージャー、データ分析ソフトウェアなど)を見つけます。

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

DeepSeekを効果的に使用する鍵は、質問を明確にすることです。質問を直接および具体的に表現してください。特定の詳細と背景情報を提供します。複雑な問い合わせのために、複数の角度と反論の意見が含まれています。コードのパフォーマンスボトルネックなどの特定の側面に焦点を当てます。あなたが得る答えについて批判的な考えを維持し、あなたの専門知識に基づいて判断を下します。

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:18 PM

DeepSeekに付属する検索機能を使用するだけです。ただし、不人気で最新の情報または考慮する必要がある検索の場合、キーワードを調整したり、より具体的な説明を使用したり、他のリアルタイム情報源と組み合わせたり、DeepSeekが必要なツールであることを理解する必要があります。アクティブで明確で洗練された検索戦略。

DeepSeekをプログラムする方法 DeepSeekをプログラムする方法 Feb 19, 2025 pm 05:36 PM

DeepSeekはプログラミング言語ではなく、深い検索の概念です。 DeepSeekの実装には、既存の言語に基づいて選択が必要です。さまざまなアプリケーションシナリオでは、適切な言語とアルゴリズムを選択し、機械学習技術を組み合わせる必要があります。コードの品質、保守性、テストが重要です。適切なプログラミング言語、アルゴリズム、ツールをお客様のニーズに応じて選択し、高品質のコードを作成することにより、DeepSeekを正常に実装できます。

DeepSeekを使用してアカウントを解決する方法 DeepSeekを使用してアカウントを解決する方法 Feb 19, 2025 pm 04:36 PM

質問:DeepSeekは会計に利用できますか?回答:いいえ、それは財務データの分析に使用できるデータマイニングおよび分析ツールですが、会計レコードと会計ソフトウェアの生成機能をレポートしていません。 DeepSeekを使用して財務データを分析するには、データ構造、アルゴリズム、DeepSeek APIの知識を持つデータを処理するためにコードを作成する必要があります。

Deepseekapiにアクセスする方法-Deepseekapiアクセスコールチュートリアル Deepseekapiにアクセスする方法-Deepseekapiアクセスコールチュートリアル Mar 12, 2025 pm 12:24 PM

Deepseekapiアクセスと電話の詳細な説明:クイックスタートガイドこの記事では、Deepseekapiにアクセスして呼び出す方法を詳しく説明し、強力なAIモデルを簡単に使用するのに役立ちます。ステップ1:APIキーを取得して、DeepSeekの公式Webサイトにアクセスし、右上隅の「オープンプラットフォーム」をクリックします。一定数の無料トークン(API使用量を測定するために使用)が得られます。左側のメニューで、[apikeys]をクリックし、[Apikeyの作成]をクリックします。 Apikey(たとえば、「テスト」)に名前を付け、生成されたキーをすぐにコピーします。このキーは一度しか表示されないため、必ず適切に保存してください

Pi Coinのメジャーアップデート:Pi Bankが来ています! Pi Coinのメジャーアップデート:Pi Bankが来ています! Mar 03, 2025 pm 06:18 PM

Pinetworkは、革新的なモバイルバンキングプラットフォームであるPibankを立ち上げようとしています! Pinetworkは本日、Pibankと呼ばれるElmahrosa(Face)Pimisrbankのメジャーアップデートをリリースしました。これは、従来の銀行サービスと、フィアット通貨の原子交換と暗号通貨の原子交換を実現します(resuptocursisを使用するなど、聖職者のような聖職者など、 DC)。ピバンクの魅力は何ですか?見つけましょう!ピバンクの主な機能:銀行口座と暗号通貨資産のワンストップ管理。リアルタイムトランザクションをサポートし、生​​物種を採用します

現在の AI スライシング ツールは何ですか? 現在の AI スライシング ツールは何ですか? Nov 29, 2024 am 10:40 AM

一般的な AI スライス ツールをいくつか紹介します。 TensorFlow DataSetPyTorch DataLoaderDaskCuPyscikit-imageOpenCVKeras ImageDataGenerator

See all articles