Python 正規(guī)表現(xiàn)の初めての概要
正規(guī)表現(xiàn)は、文字列が設(shè)定した文字列と一致するかどうかを判斷する、つまり文字列が特定のパターンに一致するかどうかを確認(rèn)するために使用される特殊な文字列です。
Python には、バージョン 1.5 以降、Perl スタイルの正規(guī)表現(xiàn)パターンを提供する re モジュールが追加されました。 re モジュールは、Python 言語に完全な正規(guī)表現(xiàn)機(jī)能をもたらします。
以下は、例を使用して正規(guī)表現(xiàn)を段階的に紹介します。
たとえば、文字列に特定の文字が含まれているかどうかを確認(rèn)するには、通常、次のように組み込み関數(shù)を使用してこれを?qū)g現(xiàn)します。
# 設(shè)定一個(gè)常量 a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU' # 判斷是否有 “兩點(diǎn)水” 這個(gè)字符串,使用 PY 自帶函數(shù) print('是否含有“兩點(diǎn)水”這個(gè)字符串:{0}'.format(a.index('兩點(diǎn)水') > -1)) print('是否含有“兩點(diǎn)水”這個(gè)字符串:{0}'.format('兩點(diǎn)水' in a))
出力結(jié)果は次のとおりです。
是否含有“兩點(diǎn)水”這個(gè)字符串:True 是否含有“兩點(diǎn)水”這個(gè)字符串:True
では、正規(guī)表現(xiàn)を使用するとどうなるでしょうか?
先ほど述べたように、Python には正規(guī)表現(xiàn)のすべての機(jī)能を?qū)g現(xiàn)するための re モジュールが用意されているため、最初にいずれかの関數(shù)を使用します。
re.findall(pattern, string[, flags])
この関數(shù)は文字列の関數(shù)を?qū)g裝します。正規(guī)表現(xiàn)に一致するすべての部分文字列を検索し、返すリストを作成します。具體的な操作は次のとおりです:
import re # 設(shè)定一個(gè)常量 a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU' # 正則表達(dá)式 findall = re.findall('兩點(diǎn)水', a) print(findall) if len(findall) > 0: print('a 含有“兩點(diǎn)水”這個(gè)字符串') else: print('a 不含有“兩點(diǎn)水”這個(gè)字符串')
出力結(jié)果:
['兩點(diǎn)水'] a 含有“兩點(diǎn)水”這個(gè)字符串
出力結(jié)果からわかるように、組み込み関數(shù)も同じ機(jī)能を持ちますが、上記の例は正規(guī)表現(xiàn)の理解を容易にするためだけに示されており、この正規(guī)表現(xiàn)の記述方法には意味がないことをここで強(qiáng)調(diào)しておく必要があります。なぜこのように言うのですか?
Python 獨(dú)自の関數(shù)を使用して問題を解決できるため、正規(guī)表現(xiàn)を使用する必要はありません。また、上の例の正規(guī)表現(xiàn)の設(shè)定は正規(guī)表現(xiàn)のルールではなく定數(shù)になりますが、正規(guī)表現(xiàn)の魂はルールにあるのであまり意味がありません。
では、正規(guī)表現(xiàn)のルールはどのように記述すればよいのでしょうか?心配しないで、段階的にやってみましょう。文字列內(nèi)のすべての小文字を見つけるという簡単なことから始めましょう。まず、findall 関數(shù)の最初のパラメーターに正規(guī)表現(xiàn)ルールを記述します。ここで、[a-z] は任意の小文字に一致します。2 番目のパラメーターには、一致する文字列を入力するだけで済みます。詳細(xì)は次のとおりです。
import re # 設(shè)定一個(gè)常量 a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU' # 選擇 a 里面的所有小寫英文字母 re_findall = re.findall('[a-z]', a) print(re_findall)
出力結(jié)果:
['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']
このようにして、文字列內(nèi)のすべての小文字を取得します。