0

今日は別の質問があります。特定のデータをフィルタリングするように設定している電子メール アプライアンスがありますが、これは正規表現を介してのみ行うことができます。この立派な紳士のおかげで、私はこれを部分的に達成することができました。私が今達成しなければならないことは、もう少し複雑なことです。私は正規表現の完全な初心者であることを付け加えておきます。今私はこれを使用しています:

(?<!\d)(?!1000000)([1-7]\d{6}|8000000)(?!\d)

1000001 から 8000000 までの範囲内で 7 桁の整数を検索するには、1000000 から 12000000000 までの整数を検索します。ここのセクションを変更するだけで、このコードの目的を変更できます。

([1-7]\d{6}

しかし、私の理解では、必要なデータを見つけるために5つの別々の式をフォーマットする必要があります(これについては完全にベースから外れているかもしれませんが、この行を必要なものに変更するための正規表現について十分に知りません)。1 つの式で 7 ~ 12 桁のデータを検索し、特定の明示的な 12 桁の値で停止することをお勧めします。どうすればこれを達成できますか?

4

4 に答える 4

1

1000000 から 12000000000 (排他的) は、ほぼ次のようになります。

1000000 ~ 9999999:[1-9][0-9]{6}

10000000 ~ 99999999:[1-9][0-9]{7}

100000000 ~ 999999999:[1-9][0-9]{8}

1000000000 ~ 9999999999:[1-9][0-9]{9}

10000000000 ~ 11999999999:1[01][0-9]{9}

一部の正規表現構文バリアントでは、どこからでも取得a{m,n}できるため、これらの最初の 4 つを 1 つに組み合わせることができます。完全一致の完全な正規表現は次のようになります。amn

[1-9][0-9]{6,9}|1[01][0-9]{9}

これをラップし(?<![0-9])(...)(?![0-9])て、文字列の一部を検索できるようにします。

これは にも一致するため、それを除外するには、他の数字が続くことを許可するように変更したことを除いて、既に取得1000000したものと同じ構成を使用できます。(?!...)1000000

(?<![0-9])((?!1000000(?![0-9]))[1-9][0-9]{6,9}|1[01][0-9]{9})(?![0-9])

ちなみに、どの正規表現方言を使っているのかわからないので[0-9]代わりに を使っています。一部の方言では、0123456789 以外の数字にも一致します。\d\d

于 2013-09-19T19:41:50.970 に答える
0
^([1-9][0-9]{6,9}|1[0-2][0-9]{9})$

正規表現の視覚化

Debuggex デモ

于 2013-09-19T19:49:40.093 に答える
0

私はあなたの質問を誤解しているかもしれませんが、それだけではありません

^[1-9][0-9]{6,11}$
于 2013-09-19T19:39:46.870 に答える