正規表現は、文字列が設定した文字列と一致するかどうかを判断する、つまり文字列が特定のパターンに一致するかどうかを確認するために使用される特殊な文字列です。
Python には、バージョン 1.5 以降、Perl スタイルの正規表現パターンを提供する re モジュールが追加されました。 re モジュールは、Python 言語に完全な正規表現機能をもたらします。
以下は、例を使用して正規表現を段階的に紹介します。
たとえば、文字列に特定の文字が含まれているかどうかを確認するには、通常、次のように組み込み関数を使用してこれを実現します。
# 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 判断是否有 “两点水” 这个字符串,使用 PY 自带函数 print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1)) print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a))
出力結果は次のとおりです。
是否含有“两点水”这个字符串:True 是否含有“两点水”这个字符串:True
では、正規表現を使用するとどうなるでしょうか?
先ほど述べたように、Python には正規表現のすべての機能を実現するための re モジュールが用意されているため、最初にいずれかの関数を使用します。
re.findall(pattern, string[, flags])
この関数は文字列の関数を実装します。正規表現に一致するすべての部分文字列を検索し、返すリストを作成します。具体的な操作は次のとおりです:
import re # 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 正则表达式 findall = re.findall('两点水', a) print(findall) if len(findall) > 0: print('a 含有“两点水”这个字符串') else: print('a 不含有“两点水”这个字符串')
出力結果:
['两点水'] a 含有“两点水”这个字符串
出力結果からわかるように、組み込み関数も同じ機能を持ちますが、上記の例は正規表現の理解を容易にするためだけに示されており、この正規表現の記述方法には意味がないことをここで強調しておく必要があります。なぜこのように言うのですか?
Python 独自の関数を使用して問題を解決できるため、正規表現を使用する必要はありません。また、上の例の正規表現の設定は正規表現のルールではなく定数になりますが、正規表現の魂はルールにあるのであまり意味がありません。
では、正規表現のルールはどのように記述すればよいのでしょうか?心配しないで、段階的にやってみましょう。文字列内のすべての小文字を見つけるという簡単なことから始めましょう。まず、findall 関数の最初のパラメーターに正規表現ルールを記述します。ここで、[a-z] は任意の小文字に一致します。2 番目のパラメーターには、一致する文字列を入力するだけで済みます。詳細は次のとおりです。
import re # 设定一个常量 a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU' # 选择 a 里面的所有小写英文字母 re_findall = re.findall('[a-z]', a) print(re_findall)
出力結果:
['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']
このようにして、文字列内のすべての小文字を取得します。
次のセクション