Python RegEx をマスターする: パターン マッチングの詳細

小さな手を動かして大金を稼いで、親指を立ててください!

正規表現とは何ですか?

正規表現 (regex と略されることもよくあります) は、テキストを操作するための強力なツールです。基本的に、これらは検索パターンを確立する一連の文字で構成されます。このパターンは、パターンの一致、テキストの置換、文字列の分割など、幅広い文字列操作に使用できます。

歴史

代替

数学者の Stephen Cole Kleene は、1950 年代に正規セットまたは正規言語を記述するための表記法として正規表現を初めて導入しました。

現在、正規表現はプログラマー、データ サイエンティスト、IT プロフェッショナルにとって不可欠なスキルです。

重要性

これらの正規表現の使用方法に入る前に、Python を使用してそのさまざまな応用分野を見てみましょう。

  • データ検証: 正規表現は、さまざまな種類のデータを検証するのに非常に役立ちます。(メールアドレス、電話番号)
  • Web スクレイピング: Web 経由でデータをスクレイピングする場合、正規表現を使用して HTML を解析し、必要な情報を分離できます。
  • 検索と置換: 正規表現は、特定のパターンに一致する文字列を識別し、それらを代替文字列に置き換えるのに適しています。この機能は、テキスト エディター、データベース、コーディングで特に役立ちます。
  • 構文の強調表示: 多くのテキスト エディターは、構文の強調表示に正規表現を使用します。
  • 自然言語処理 (NLP): NLP では、トークン化、ステミング、その他のさまざまなテキスト処理機能など​​のタスクに正規表現が使用されます。
  • ログ分析: ログ ファイルを処理する場合、正規表現を使用すると、特定のログ エントリを効率的に抽出したり、時間の経過に伴うパターンを分析したりできます。

これで、十分なモチベーションが得られることを願っています。

正規表現に関するすべての re モジュールから始めましょう。

re モジュールの紹介

Python は、re モジュールを通じて正規表現のネイティブ サポートを提供します。

このモジュールは Python の標準ライブラリです。つまり、外部からインストールする必要はなく、すべての Python インストールに付属しています。

re モジュールには、正規表現を操作するためのさまざまな関数とクラスが含まれています。関数の中には、テキストを一致させるもの、テキストを分割するもの、テキストを置換するものがあります。

它包括为处理正则表达式而定制的各种函数和类。其中,某些函数被指定用于文本匹配,其余函数被指定用于文本分割或文本替换。

导入 re 模块

正如我们已经提到的,它附带安装,因此无需担心安装。

这就是为什么要开始在 Python 中使用正则表达式,您需要首先导入 re 库。您可以使用 import 语句来执行此操作,如下所示。

import re

导入库后,您可以启动 re 模块提供的函数和类等功能。

让我们从一个简单的例子开始。

假设您想要查找字符串中出现的所有单词“Python”。

我们可以使用 re 模块中的 findall() 函数。

这是代码。

import re 
# Sample text 
text = "Python is an amazing programming language. Python is widely used in various fields." 
# Find all occurrences of 'Python' 
matches = re.findall("Python", text) 
# Output the matches 
print(matches)
代替

re 模块中有更多函数可以用来构建更复杂的模式。但首先,让我们看看 re 模块中的常用函数。

常用函数

在向您介绍 Python RegEx 的基础知识之前,我们先看看常用函数,以便更好地掌握其余概念。 re 模块包含许多不同的功能。通过使用它们,我们可以执行不同的操作。

在接下来的部分中,我们将发现其中的一些。

代替

re.match()

re.match() 捕获正则表达式是否以特定字符串开头。

如果存在匹配,该函数返回一个匹配对象;如果没有,则不返回任何内容。

接下来,我们将使用 re.match() 函数。这里我们将检查字符串文本是否以单词“Python”开头。然后我们将结果打印到控制台。

import re
pattern = "Python"
text = "Python is amazing."
# Check if the text starts with 'Python'
match = re.match(pattern, text)
# Output the result
if match:
    print("Match found:", match.group())
else:
    print("No match found")
  • 输出
代替

输出显示模式“Python”与文本的开头匹配。

re.search()

与 re.match() 相比,re.search() 函数扫描整个字符串来搜索匹配项,如果发现匹配项,则生成一个匹配对象。

在下面的代码中,我们使用 re.search() 函数在字符串文本中的任意位置搜索单词“amazing”。如果找到该单词,我们将其打印出来;否则,我们打印“未找到匹配项”。

pattern = "amazing"
text = "Python is amazing."
# Search for the pattern in the text
match = re.search(pattern, text)
# Output the result
if match:
    print("Match found:", match.group())
else:
    print("No match found")
  • 输出
代替

输出显示我们的代码从给定的文本中捕捉到了令人惊奇的结果。

re.findall()

re.findall() 函数用于收集字符串中某个模式的所有非重叠匹配项。它将这些匹配项作为字符串列表返回。

次の例では、 re.findall() 関数を使用して、文字列内に出現するすべての「a」を検索します。一致したものはリストとして返され、コンソールに出力されます。

pattern = "a"
text = "This is an example text."
# Find all occurrences of 'a' in the text
matches = re.findall(pattern, text)
# Output the matches
print(matches)
  • 出力
代替

出力は、テキスト内で見つかった文字「a」の重複しないすべての出現を表します。

re.finditer()

re.finditer() 関数は re.findall() に似ていますが、一致オブジェクトを生成する反復子を返します。

以下のコードでは、 re.finditer() 関数を使用して、文字列リテラル内に出現する文字「a」をすべて検索します。これは一致オブジェクトのイテレータを返し、各一致のインデックスと値を出力します。

pattern = "a"
text = "This is an example text."
# Find all occurrences of 'a' in the text
matches = re.finditer(pattern, text)
# Output the matches
for match in matches:
    print(f"Match found at index {match.start()}{match.group()}")
  • 出力
代替

出力には、テキスト内のパターン「a」のインデックスが表示されます。

re.sub()

re.sub() 関数は、文字列を別の文字列に置換するために使用されます。次に、re.sub() 関数を使用して、「Python」を「Java」に置き換えます。次に、変更した文字列を出力します。

pattern = "Python"
replacement = "Java"
text = "I love Python. Python is amazing."
# Replace 'Python' with 'Java'
new_text = re.sub(pattern, replacement, text)
# Output the new text
print(new_text)  # Output: "I love Java. Java is amazing."
  • 出力
代替

出力は、テキスト内の「Python」を「Java」に正常に置き換えることができることを示しています。

この記事はmdniceマルチプラットフォームによって公開されています

おすすめ

転載: blog.csdn.net/swindler_ice/article/details/131970574