2016-10-15 14 views
2

私は正規表現のPythonで作業していますが、私はこの問題に遭遇しました。Pythonの正規表現[ d +]

有効な携帯電話番号は、これに7,8または9 私の解決策として始まる10桁の番号です:私はエラーを取得した

います。後で私は

if len(x)==10 and re.search(r'^[7|8|9]+\d+$',x): 

に変更しました。すべてのテストケースが合格しました。私は使用して、[]\d+の正規表現の使用の違いを知りたいですか?

おかげ

+2

'[\ d] +'は正しいはずですが、[\ d +]は数字かプラスのいずれかのチャプターを意味します。また文字クラスから '|' sを取り除いてください。 '|'とだけ扱われます。 –

+1

私はあなたが正規表現のチュートリアルを読む必要があると思います。あなたは本当に '()'を使っているようです。 – Barmar

+1

'[]'は内部で1文字を探します。例: '[abc]'は 'a'、' b'または 'c'を探します。 –

答えて

4

[\d+] = 1桁(0-9)または+文字。

\d+ = 1桁以上。

+0

エスケープシーケンスは '[]'の中で動作するので、数字か '+'です。 – Barmar

1

また、行うことができます:

if re.search(r'^[789]\d{9}$', x): 

は、正規表現は、明示的な長さの代わりに、無限の繰り返しを使用してlen(x)==10一部を処理させます。

0

[]+に関する一般的な説明は必要なものだと思います。

[]は、内部で指定された1文字と一致します。
例:[qwe]q,wまたはeと一致します。

[]の式を入力する場合は、[^ expression]とする必要があります。

+は、1つ以上の要素と一致します。 例:qw+eマッチqweqwweqwwwwe、等...
注:これは、要素0回以上の前**としてマッチとは異なります。すなわちqw*eqeにも一致します。

\d数字と一致します。