正規表現
- 正規表現は、文字列を一致させるために使用される強力な武器です。そのデザインのアイデアは、それ以外の場合は、文字列が正当でない、文字列の規則に従う人々は、我々はそれを「一致」を検討し、ルールを定義するための言語の記述文字列を使用することです。
- 共通試合:
\d
マッチは、任意の数0-9であってもよいです'00\d'
一致させることができる'007'
、ではない一致'00A'
\w
0-9試合任意の数、aからz / AZの文字のいずれか、特殊文字が一致して'\w\w\d'
一致させることができます'py3'
.
あなたは、任意の文字に一致させることができます'py.'
一致させることができます'pyc'
*
これは、任意の数の文字を表し、+
これは、少なくとも一つの文字を表し?
これは、0または1文字を表し、{n}
Nは文字を表し{n,m}
これは、nmの文字を表し、\s
これは、(タブを含む)スペースを表し\d{3}\s+\d{3,8}
\d{3}
:3のような、任意の数を表します。010
\s+
それは、次のような少なくとも1つのスペース文字を表し、' '
\d{3,8}
それは、次のような、3-8の数字を表し、123
- レンジマッチング:
[0-9a-zA-Z\_]
表現は、数字、英字、アンダースコアを一致させることができます[0-9a-zA-Z\_]+
、数字、文字、または少なくとも下線文字列で一致したことを示すような'A100'
、'_123
[a-zA-Z\_][0-9a-zA-Z\_]*
文字、数字またはアンダースコア試合の開始後の文字の任意の数のアクセス(数字であってもよいし、文字は、アンダースコア)[a-zA-Z\_][0-9a-zA-Z\_]{0,19}
より正確には1〜20文字(19文字+にバックアップの前に1文字)の可変の長さを制限A|B
AまたはBのような、一致させることができる(P|p)ython
試合Python
、python
^
行の先頭を表し、^\d
それは数字で開始する必要性を表明しました$
行の終わりを示し、\d$
それは数字で終了する必要性を表明しました^...$
マッチングの全ライン0[0-9]
これは、一致を表す00-09
文字列を
- モジュールの再
コード:
`` `PYTHON
!#Usrの/ binに/ ENV /のpython3
# - -コーディング:UTF-8 - -正規表現#
\エスケープと#、Pythonの文字列自体
のS = 'ABC \ -001' #のPython文字列
#正規表現文字列に対応するには、次のようになります。
# 'ABC-001'パイソンを使用して#のRプレフィックスは、エスケープの問題を考慮していない
S = r'ABC-001「#のPython文字列の
正規表現文字列定数に対応する#:
#」ABC-001」再インポート
#が一致する正規表現かどうかを判断する
re.matchを(R '^ \ dの{ - 、 '010から12345' \ dの{3,8} $ 3}')#マッチ(一致が成功した場合に一致するかどうかを決定する)方法は、Matchオブジェクト、そうでなければなしを返します。一般的な方法は、決定することです。
もしre.match(R '^ \ dの{3} - \ dの{3,8} $'、 '010から12345678'):
プリント( 'OK')
他:
プリント( 'NO')スライス列#の
正規表現に一致する文字列を#除去がすべてのスペースが
= re.split再出品(R&LTを'\ S +'、 'AB&12がCDである。3')
プリント(再出品)
すべてのスペースの除去と一致#正規表現、 ,,;
reList1 = re.split(R&LT '[\ S ,;] +'、」1、56である3; 34で)
プリント(reList1)パケット#1
、単に外部の一致を決定することに加えて#、抽出電力をサブストリング正規表現。()抽出すべきパケットである(グループ)で表されることにより
、M = re.match(R '^( \ D {3}) - (\ D {3,8})$'、 '012から356789')(# 012)セット(356789)の集合である
プリント(m.group(0))#元の文字列の
印刷(m.groupは(1))#012
プリント(m.group(2))#356789#貪欲試合:通常のマッチデフォルトそれはできるだけ多くの文字にマッチする、ある、貪欲なマッチングです。
#1 \ dの+貪欲試合以来、直接すべて0マッチの後ろに、0の結果は空の文字列を一致させることができます。
印刷(re.match(R '^(\ dは+)(0)$'、 '102300')。グループ())
0の背面に#1のlet \ dの+非欲張りマッチ(つまり、できるだけ少ない試合です)それに合わせ、プラス?させることができます\ dの+非欲張り一致
プリント(re.match(R '^( \ dは+?)(0 *)$'、 '102300')。グループ())#正規表現を書くために電子メールアドレスを確認してください。:バージョンはメールで類似していることを確認することができます
インポートの再
DEFのis_valid_email(ADDR):
#[\ W.] +マッチ0-9A-ZA-Zの試合、少なくとも1つの文字の一致が.COM .COM ..
re.match(R&LTを返します。 '[\ワット] + @ \ + .COM W'、ADDR)#1测试:
is_valid_emailをアサート('[email protected] ')
(is_valid_email'[email protected])をアサート'
( 'ボブ#example.com')is_valid_emailない主張
の例@ "MR-ボブ(is_valid_emailない主張。 COM ')
プリント(' 'OK)#バージョン2つの電子メールアドレスが名を用いて抽出することができます:
インポートの再
DEFのname_of_email(ADDR):
「#は?」の長さがゼロであってもよい、任意の文字列の長さ最短マッチを表します。右の試合の概要括弧文字とスペースの任意の文字列、名前が仕様を満たし、および方法は、抽出グループを返します。
re.matchリターン( 'R&LT([\ W \ S] +)?'、ADDR).group(1)
#テスト:
name_of_emailをアサート( '[email protected] ')=='トム・パリの
アサートname_of_email('[email protected]')=='トム
印刷( 'OK')
`` `