目次
将单词与模式匹配
匹配一系列字符范围
替换字符串:
反斜杠问题
匹配单个字符
删除换行符
正则表达式的实际例子
电话号码验证
电子邮件验证
网页抓取
ホームページ バックエンド開発 Python チュートリアル いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

Apr 14, 2023 pm 06:07 PM
python 正規表現

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

正規表現は、テキストの検索、編集、操作に使用できます。 Python RegEx はほぼすべての企業で広く使用されており、アプリケーションにとって業界でのアピール力が高いため、正規表現の重要性がますます高まっています。

今日は Python の正規表現を一緒に学びましょう。

正規表現を使用する理由。

この質問に答えるために、まず、正規表現を使用することで解決できる、直面するさまざまな問題を見てみましょう。

次のシナリオを考えてみましょう:

記事の最後に、大量のデータを含むログ ファイルがあります。このログ ファイルから、日付と時刻のみを取得したいと考えています。 。一見すると、ログ ファイルの可読性は非常に低いです。

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。


# この場合、正規表現を使用してパターンを識別し、必要な情報を簡単に抽出できます。

次のシナリオを考えてみましょう。あなたは営業担当者で、多くの電子メール アドレスを持っていますが、その多くは偽/無効です。下の画像を見てください。

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

できることは、正規表現を使用することです。これにより、電子メール アドレスの形式が検証され、本物の ID から偽の ID が除外されます。

次のシナリオは営業担当者の例と非常によく似ています。次の図を考慮してください:

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

電話番号を確認して比較する方法原産国に基づいて並べ替えますか?

正しい数値にはそれぞれ、正規表現を使用して追跡および追跡できる特定のパターンがあります。

次は別の簡単なシナリオです:

名前、年齢、住所などの詳細を含む学生のデータベースがあります。学区コードが元々は 59006 だったが、現在は 59076 に変更されている状況を考えてみましょう。このコードを生徒ごとに手動で更新すると、非常に時間がかかり、プロセスが非常に長くなります。

基本的に、正規表現を使用してこれらの問題を解決するには、まず学生データから PIN コードを含む特定の文字列を見つけて、それらをすべて新しい文字列に置き換えます。

正規表現とは

正規表現は、テキスト文字列内の検索パターンを識別するために使用されます。また、データの正確性を見つけるのにも役立ち、正規表現を使用して次のような操作を実行することもできます。データの検索、置換、およびフォーマット。

次の例を考えてみましょう:

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

指定された文字列のすべてのデータのうち、都市のみが必要であると仮定すると、これはフォーマットされた形式で変換できます。 way to 名前と都市のみを含む辞書。ここでの問題は、名前と都市を推測するパターンを特定できるかということです。あと年齢が上がると年齢もわかるので簡単ですよね?それは単なる整数です。

この名前をどうするか?パターンを見ると、すべての名前が大文字で始まります。正規表現を使用すると、この方法で名前と年齢を識別できます。

次のコードを使用できます

import re
Nameage = '''
Janice is 22 and Theon is 33
Gabriel is 44 and Joey is 21
'''
ages = re.findall(r'd{1,3}', Nameage)
names = re.findall(r'[A-Z][a-z]*',Nameage)
ageDict = {}
x = 0
for eachname in names
ageDict[eachname] = ages[x]
x+=1
print(ageDict)
ログイン後にコピー

出力:

{'Janice': '22', 'Theon': '33', 'Gabriel': '44', 'Joey': '21'}
ログイン後にコピー

正規表現の例:

次のコードを使用できます。正規表現 式は多くの操作を実行します。ここでは、正規表現の使用法をよりよく理解するために非常に重要な事項をいくつかリストしました。

まず、文字列内の特定の単語を検索する方法を確認しましょう

文字列内の単語を検索します

import re
if re.search("inform","we need to inform him with the latest information"):
print("There is inform")
ログイン後にコピー

ここで行ったことは次のとおりです。すべては、検索文字列に存在する単語「inform」を検索することについてです。

もちろん、次のコードを最適化することもできます。

import re
allinform = re.findall("inform","We need to inform him with the latest information!")
for i in allinform:
print(i)
ログイン後にコピー

ここでは、この特別なケースでは、infor が 2 回見つかります。 1 つは情報から来ており、もう 1 つは情報から来ています。

上で示したように、正規表現内の単語を検索するのは非常に簡単です。

次に、正規表現を使用してイテレータを生成する方法を学びます。

イテレータの生成

イテレータの生成は、文字列の開始インデックスと終了インデックスを検索してターゲットにする簡単なプロセスです。次の例を考えてみましょう:

import re
Str = "we need to inform him with the latest information"
for i in re.finditer("inform.", Str
locTuple = i.span()
print(locTuple)
ログイン後にコピー

見つかった一致ごとに、開始インデックスと終了インデックスが出力されます。上記のプログラムを実行すると、出力は次のようになります。

(11, 18)
(38, 45)
ログイン後にコピー

次に、正規表現を使用して単語とパターンを一致させる方法を確認します。

将单词与模式匹配

考虑一个输入字符串,我们必须将某些单词与该字符串匹配。要详细说明,请查看以下示例代码:

import re
Str = "Sat, hat, mat, pat"
allStr = re.findall("[shmp]at", Str)
for i in allStr:
print(i)
ログイン後にコピー

字符串中有什么共同点?可以看到字母“a”和“t”在所有输入字符串中都很常见。代码中的 [shmp] 表示要查找的单词的首字母,因此,任何以字母 s、h、m 或 p 开头的子字符串都将被视为匹配,其中任何一个,并且最后必须跟在“at”后面。

Output:

hat
mat
pat
ログイン後にコピー

接下来我们将检查如何使用正则表达式一次匹配一系列字符。

匹配一系列字符范围

我们希望输出第一个字母应该在 h 和 m 之间并且必须紧跟 at 的所有单词。看看下面的例子,我们应该得到的输出是 hat 和 mat

import re
Str = "sat, hat, mat, pat"
someStr = re.findall("[h-m]at", Str)
for i in someStr:
print(i)
ログイン後にコピー

Output:

hat
mat
ログイン後にコピー

现在让我们稍微改变一下上面的程序以获得一个不同的结果

import re
Str = "sat, hat, mat, pat"
someStr = re.findall("[^h-m]at", Str)
for i in someStr:
print(i)
ログイン後にコピー

发现细微差别了吗,我们在正则表达式中添加了插入符号 (^),它的作用否定了它所遵循的任何效果。我们不会给出从 h 到 m 开始的所有内容的输出,而是会向我们展示除此之外的所有内容的输出。

我们可以预期的输出是不以 h 和 m 之间的字母开头但最后仍然紧随其后的单词。Output:

sat
pat
ログイン後にコピー

替换字符串:

接下来,我们可以使用正则表达式检查另一个操作,其中我们将字符串中的一项替换为其他内容:

import re
Food = "hat rat mat pat"
regex = re.compile("[r]at")
Food = regex.sub("food", Food)
print(Food)
ログイン後にコピー

在上面的示例中,单词 rat 被替换为单词 food。正则表达式的替代方法就是利用这种情况,它也有各种各样的实际用例。Output:

hat food mat pat
ログイン後にコピー

反斜杠问题

import re
randstr = "Here is Edureka"
print(randstr)
ログイン後にコピー

Output:

Here is Edureka
ログイン後にコピー

这就是反斜杠问题,其中一个斜线从输出中消失了,这个特殊问题可以使用正则表达式来解决。

import re
randstr = "Here is Edureka"
print(re.search(r"Edureka", randstr))
ログイン後にコピー

Output:

<re.Match object; span=(8, 16), match='Edureka'>
ログイン後にコピー

这就是使用正则表达式解决反斜杠问题的简单方法。

匹配单个字符

使用正则表达式可以轻松地单独匹配字符串中的单个字符

import re
randstr = "12345"
print("Matches: ", len(re.findall("d{5}", randstr)))
ログイン後にコピー

Output:

Matches: 1
ログイン後にコピー

删除换行符

我们可以在 Python 中使用正则表达式轻松删除换行符

import re
randstr = '''
You Never
Walk Alone
Liverpool FC
'''
print(randstr)
regex = re.compile("
")
randstr = regex.sub(" ", randstr)
print(randstr)
ログイン後にコピー

Output:

You Never
Walk Alone
Liverpool FC
You Never Walk Alone Liverpool FC
ログイン後にコピー

可以从上面的输出中看到,新行已被空格替换,并且输出打印在一行上。

还可以使用许多其他东西,具体取决于要替换字符串的内容

: Backspace
: Formfeed
: Carriage Return
: Tab
: Vertical Tab
ログイン後にコピー

可以使用如下代码

import re
randstr = "12345"
print("Matches:", len(re.findall("d", randstr)))
ログイン後にコピー

Output:

Matches: 5
ログイン後にコピー

从上面的输出可以看出,d 匹配字符串中存在的整数。但是,如果我们用 D 替换它,它将匹配除整数之外的所有内容,与 d 完全相反。

接下来我们了解一些在 Python 中使用正则表达式的重要实际例子。

正则表达式的实际例子

我们将检查使用最为广泛的 3 个主要用例

  • 电话号码验证
  • 电子邮件地址验证
  • 网页抓取

电话号码验证

需要在任何相关场景中轻松验证电话号码

考虑以下电话号码:

  • 444-122-1234
  • 123-122-78999
  • 111-123-23
  • 67-7890-2019

电话号码的一般格式如下:

  • 以 3 位数字和“-”符号开头
  • 3 个中间数字和“-”号
  • 最后4位数

我们将在下面的示例中使用 w,请注意 w = [a-zA-Z0-9_]

import re
phn = "412-555-1212"
if re.search("w{3}-w{3}-w{4}", phn):
print("Valid phone number")
ログイン後にコピー

Output:

Valid phone number
ログイン後にコピー

电子邮件验证

在任何情况下验证电子邮件地址的有效性。

考虑以下电子邮件地址示例:

  • Anirudh@gmail.com
  • Anirudh@com
  • AC.com
  • 123 @.com

我们只需一眼就可以从无效的邮件 ID 中识别出有效的邮件 ID,但是当我们的程序为我们做这件事时,却并没有那么容易,但是使用正则,就非常简单了。

指导思路,所有电子邮件地址应包括:

  • 1 到 20 个小写和/或大写字母、数字以及 . _ % +
  • 一个@符号
  • 2 到 20 个小写和大写字母、数字和加号
  • 一个点号
  • 2 到 3 个小写和大写字母

import re
email = "ac@aol.com md@.com @seo.com dc@.com"
print("Email Matches: ", len(re.findall("[w._%+-]{1,20}@[w.-]{2,20}.[A-Za-z]{2,3}", email)))
ログイン後にコピー

Output:

Email Matches: 1
ログイン後にコピー

从上面的输出可以看出,我们输入的 4 封电子邮件中有一封有效的邮件。

这基本上证明了使用正则表达式并实际使用它们是多么简单和高效。

网页抓取

从网站上删除所有电话号码以满足需求。

要了解网络抓取,请查看下图:

いくつかの Python 正規表現をコンパイルしました。これらを取得して使用できます。

我们已经知道,一个网站将由多个网页组成,我们需要从这些页面中抓取一些信息。

网页抓取主要用于从网站中提取信息,可以将提取的信息以 XML、CSV 甚至 MySQL 数据库的形式保存,这可以通过使用 Python 正则表达式轻松实现。

import urllib.request
from re import findall
url = "http://www.summet.com/dmsi/html/codesamples/addresses.html"
response = urllib.request.urlopen(url)
html = response.read()
htmlStr = html.decode()
pdata = findall("(d{3}) d{3}-d{4}", htmlStr)
for item in pdata:
print(item)
ログイン後にコピー

Output:

(257) 563-7401
(372) 587-2335
(786) 713-8616
(793) 151-6230
(492) 709-6392
(654) 393-5734
(404) 960-3807
(314) 244-6306
(947) 278-5929
(684) 579-1879
(389) 737-2852
...
ログイン後にコピー

我们首先是通过导入执行网络抓取所需的包,最终结果包括作为使用正则表达式完成网络抓取的结果而提取的电话号码。

以上がいくつかの 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)

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

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

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

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

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

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

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

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

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

See all articles