Pythonモジュールの再正規表現の詳細な紹介
1. 簡単な紹介
正規表現は、小さくて高度に専門化されたプログラミング言語であり、多くのプログラミング言語の基本的かつ重要な部分です。 Python では主に re モジュールを通じて実装されます。 正規表現パターンは一連のバイトコードにコンパイルされ、C で書かれたマッチング エンジンによって実行されます。では、正規表現の一般的な使用シナリオは何でしょうか?
たとえば、一致させたい対応する
文字列セットのルールを指定します。文字列セットには、電子メール アドレス、インターネット アドレス、電話番号、または必要に応じてカスタマイズされた文字列セットを含めることができます。
もちろん、文字列セットが定義した一致ルールに準拠しているかどうかを判断することもできます
変更、切り取り、その他のテキスト処理を行う
2 . 特殊な記号と文字 (
メタキャラクター)
ここでは、正規表現に強力な機能と柔軟性を与える一般的なメタキャラクターをいくつか示します。表 2-1 に、より一般的な記号と文字を示します。
3. 正規表現 1. 正規表現をコンパイルするには、compile() 関数 を使用します
Python コードは最終的にバイトコードに変換され、インタープリターで実行されます。したがって、コードでよく使用される正規表現を事前にコンパイルしておくと便利です。
re モジュール内のほとんどの関数は、コンパイルされた 正規表現オブジェクト および正規一致オブジェクトのメソッドと同じ名前を持ち、同じ機能を持ちます。
例:
>>> import re >>> r1 = r'bugs' # 字符串前加"r"反斜杠就不会被任何特殊方式处理,这是个习惯,虽然这里没用到 >>> re.findall(r1, 'bugsbunny') # 直接利用re模块进行解释性地匹配 ['bugs'] >>> >>> r2 = re.compile(r1) # 如果r1这个匹配规则你会经常用到,为了提高效率,那就进行预编译吧 >>> r2 # 编译后的正则对象 <_sre.SRE_Pattern object at 0x7f5d7db99bb0> >>> >>> r2.findall('bugsbunny') # 访问对象的findall方法得到的匹配结果与上面是一致的 ['bugs'] # 所以说,re模块中的大多数函数和已经编译的正则表达式对象和正则匹配对象的方法同名并且具有相同的功能
re.compile() 関数は、オプションのフラグ パラメーターも受け入れます。これらは、さまざまな特別な関数や構文の変更を実装するために一般的に使用されます。これらのフラグは、ほとんどの re モジュール関数の引数としても使用できます。これらのフラグは、演算子(|)を使用して組み合わせることができます。
例:
>>> import re >>> r1 = r'bugs' >>> r2 = re.compile(r1,re.I) # 这里选择的是忽略大小写的标志,完整的是re.IGNORECASE,这里简写re.I >>> r2.findall('BugsBunny') ['Bugs'] # re.S 使.匹配换行符在内的所有字符 # re.M 多行匹配,英雄^和$ # re,X 用来使正则匹配模式组织得更加清晰
フラグパラメータと使用法の完全なリストについては、関連する公式ドキュメントを参照してください。
2. 正規表現を使用する
re モジュールは、正規表現エンジンの
インターフェースを提供します。ここでは、一般的に使用される関数とメソッドをいくつか紹介します。
Match オブジェクトと group() および groups() メソッド
正規表現を扱う場合、正規表現オブジェクトに加えて、もう 1 つのオブジェクト タイプ、match オブジェクトがあります。これらは、match() または search() の呼び出しが成功した場合に返されるオブジェクトです。 Match オブジェクトには、group() と groups() という 2 つの主要なメソッドがあります。 group() は、リクエストに応じて一致オブジェクト全体または特定のサブグループを返します。 groups() は単にサブグループのみまたはすべてを含むタプルを返します。サブグループ化が必要ない場合、group() は一致全体を返しますが、groups は空のタプルを返します。以下のいくつかの関数例は、この方法を示しています。
文字列を一致させるには match() メソッドを使用します
match() 関数は文字列の先頭からパターンを一致させます。一致が成功した場合は一致オブジェクトが返され、一致が失敗した場合は None が返され、一致オブジェクトの group() メソッドを使用して成功した一致を表示できます。
例は次のとおりです:
>>> m = re.match('bugs', 'bugsbunny') # 模式匹配字符串 >>> if m is not None: # 如果匹配成功,就输出匹配内容 ... m.group() ... 'bugs' >>> m <_sre.SRE_Match object at 0x7f5d7da1f168> # 确认返回的匹配对象
search() を使用して文字列内のパターンを検索します
search()的工作方式与match()完全一致,不同之处在于search()是对给定正则表达式模式搜索第一次出现的匹配情况。简单来说,就是在任意位置符合都能匹配成功,不仅仅是字符串的起始部分,这就是与match()函数的区别,用脚指头想想search()方法使用的范围更多更广。
示例:
>>> m = re.search('bugs', 'hello bugsbunny') >>> if m is not None: ... m.group() ... 'bugs'
使用findall()和finditer()查找每一次出现的位置
findall()是用来查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表;finditer()与findall()不同的地方是返回一个迭代器,对于每一次匹配,迭代器都返回一个匹配对象。
>>> m = re.findall('bugs', 'bugsbunnybugs') >>> m ['bugs', 'bugs'] >>> m = re.finditer('bugs', 'bugsbunnybugs') >>> m.next() # 迭代器用next()方法返回一个匹配对象 <_sre.SRE_Match object at 0x7f5d7da71a58> # 匹配用group()方法显示出来 >>> m.next().group() 'bugs'
使用sub()和subn()搜索与替换
都是将某字符串中所有匹配正则表达式的部分进行某种形式的替换。sub()返回一个用来替换的字符串,可以定义替换次数,默认替换所有出现的位置。subn()和sub()一样,但subn()还返回一个表示替换的总是,替换后的字符串和表示替换总数一起作为一个拥有两个元素的元组返回。
示例:
>>> r = 'a.b' >>> m = 'acb abc aab aac' >>> re.sub(r,'hello',m) 'hello abc hello aac' >>> re.subn(r,'hello',m) ('hello abc hello aac', 2)
字符串也有一个replace()方法,当遇到一些模糊搜索替换的时候,就需要更为灵活的sub()方法了。
使用split()分割字符串
同样的,字符串中也有split(),但它也不能处理正则表达式匹配的分割。在re模块中,分居正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表。
示例:
>>> s = '1+2-3*4' >>> re.split(r'[\+\-\*]',s) ['1', '2', '3', '4']
有时在匹配的时候我们只想提取一些想要的信息或者对提取的信息作一个分类,这时就需要对正则匹配模式进行分组,只需要加上()即可。
示例:
>>> m = re.match('(\w{3})-(\d{3})','abc-123') >>> m.group() # 完整匹配 'abc-123' >>> m.group(1) # 子组1 'abc' >>> m.group(2) # 子组2 '123' >>> m.groups() # 全部子组 ('abc', '123')
由以上的例子可以看出,group()通常用于以普通方式显示所有的匹配部分,但也能用于获取各个匹配的子组。可以使用groups()方法来获取一个包含所有匹配字符串的元组。
以上がPythonモジュールの再正規表現の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。
