1

次の文字列:

23434 5465434

58495/46949345

58495-46949345

58495/55643

d 44444 ssdfsdf

64784

45643 dfgh

58495/55643

48593/48309596

675643235

34565435 34545

大胆なものだけを抽出したいのです。その5桁の数字(ドイツ)。上記の例のように、電話番号43564 366334などと一致しないようにする必要があります。45433 / 45663

私は次のようなことを試みまし^\b\d{5}たが、それは良い始まりではありません。

これを機能させるためのヒントはありますか?

すべてのヒントをありがとう

4

5 に答える 5

2

これがドイツの郵便番号の正規表現です(出典

^([0124678][0-9]{4})$
于 2011-02-19T00:42:14.450 に答える
2

電話番号との一致を回避するために、否定的な先読みアサーションを追加できます。

\b[0124678][0-9]{4}\b(?!\s?[ \/-]\s?[0-9]+)

Ruby 1.9を使用している場合は、否定的な後読みアサーションを追加することもできます。

于 2011-02-19T03:03:28.853 に答える
1

検索しようとしている番号を区別するものを指定していません。

与えた文字列の例に基づくと、次のようになります。 ^(\d{5})\n

これは、5桁で始まり、他に何も含まれていない行に一致します。

最初の5桁の後にいくつかのスペースを許可することをお勧めします(ただし、他には何もありません)。 ^(\d{5})\s*\n

于 2011-02-19T00:36:17.090 に答える
0

指定されたルールについては完全にはわかりません。ただし、5桁で始まり、追加の桁を含まない行が必要な場合は、次のように機能する可能性があります。

^(\d{5})[^\d]*$

先頭の空白に問題がない場合は、次のようにします。

^\s*(\d{5})[^\d]*$

結果を示すRubularリンクは次のとおりです。

于 2011-02-19T00:35:09.080 に答える
0
^\D*(\d{5})(\s(\D)*$|()$)

これは(テストされていない)一致するはずです:

  • 5桁(またはいくつかの非数字、次に5桁)で始まり、スペース、そしていくつかの非数字で終わる行
  • 5桁で開始および終了する行(または一部の非数字とその後5桁)

\1は5桁になります

\ 2は、もしあれば、後半全体になります

\ 3は、もしあれば、数字の後の単語になります

質問者の編集された質問に合うように編集された

もう一度編集してください:私ははるかにエレガントな解決策を思いつきました:

^\D*(\d{5})\D*$
于 2011-02-19T00:43:44.713 に答える