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

Pythonの正規表現で任意の1文字にマッチさせる方法

Pythonの正規表現では、特別なメタ文字「.」(ドット)を使用することで、文字列内の任意の1文字にマッチさせることができます。このメタ文字は、改行文字(\n)を除くあらゆる単一の文字と一致します。re.findall() 関数と組み合わせれば、指定した文字列からすべての文字を1つずつ取り出すことが可能です。

サンプルコード

import re

foo = 'https://www/twitter/index.php 403'
result = re.findall(r'.', foo)
print(result)

実行結果

上記のコードを実行すると、次のような出力が得られます。文字列内の各文字(英字・記号・数字・空白を含む)が、リストの要素として1つずつ抽出されていることがわかります。

['h', 't', 't', 'p', 's', ':', '/', '/', 'w', 'w', 'w', '/', 't', 'w', 'i',
 't', 't', 'e', 'r', '/', 'i', 'n', 'd', 'e', 'x', '.', 'p', 'h', 'p', ' ',
'4', '0', '3']

補足:より実用的な使い方

.」はデフォルトでは改行文字にマッチしないため、改行も含めて任意の1文字を取得したい場合は、re.findall(r'.', foo, re.DOTALL) のように re.DOTALL フラグを指定します。また、「英小文字のみ」「数字のみ」など特定の種類の1文字だけを対象にしたい場合は、文字クラス(例:[a-z]\d)を組み合わせると柔軟に対応できます。

  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]パ