Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで正規表現を使って空白文字にマッチさせる方法を解説

Pythonのreモジュールを使うと、正規表現によって文字列内の空白文字(スペース、タブ、改行など)を簡単に検出できます。空白にマッチさせるには、正規表現パターンとして \s を使用します。以下に具体的なコード例を紹介します。

例1:re.search()で最初の空白を検索する

次のコードは、指定した文字列の中から最初に現れる空白を1つ検索します。

import re
result = re.search(r'[\s]', 'The Indian Express')
print(result)

実行結果

<re.Match object; span=(3, 4), match=' '>

re.search() は、パターンにマッチした最初の位置の情報を持つマッチオブジェクトを返します。この例では、3番目のインデックスにある半角スペースがマッチしています。

例2:re.findall()ですべての空白を抽出する

次のコードは、文字列内のすべての空白を検索し、リスト形式で取得します。

import re
result = re.findall(r'[\s]', 'The Indian Express')
print(result)

実行結果

[' ', ' ']

re.findall() を使うと、マッチしたすべての部分がリストとして返されます。「The Indian Express」という文字列には単語間のスペースが2つあるため、結果は2つの空白からなるリストになります。

補足:\sがマッチする文字

正規表現の \s は、次のような空白文字すべてにマッチします。

  • 半角スペース( )
  • タブ(\t)
  • 改行(\n)
  • キャリッジリターン(\r)
  • フォームフィード(\f)

また、[\s] のように角括弧で囲む必要はなく、r'\s' と書いても同じ意味になります。逆に空白以外の文字にマッチさせたい場合は、大文字の \S を使用します。

  1. Pythonの正規表現で単語以外の文字をマッチさせる方法

    正規表現を使って文字列から「単語以外の文字」を取り出したい場合、Pythonのreモジュールに用意されている特殊シーケンス \W を使うのが最も簡単です。\W は、英字・数字・アンダースコア([^a-zA-Z0-9_])以外のすべての文字に一致します。以下のコードでは、指定した文字列から単語以外の文字をすべて抽出し、そのリストを出力しています。コード例import re s = ab5z8d*$&Y@ regx = re.compile(r\W) result = regx.findall(s) print(result)ポイントとして、パターン文字列の先頭に r を付けて raw 文字列に

  2. 【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法

    次のコードは、指定された文字列の中から「meeting」という単語を抽出します。ここでは肯定の先読み(look-ahead)と肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。コード例import re s = https://www.google.com/meeting_agenda_minutes.html result = re.findall(r(?<=[\W_])meeting(?=[\W_]), s) print(result)出力[meeting]パ