2017-02-24 6 views
0

文字列だけでなく、数字も検出したいと思っています。Rubyの住所を正規化する

一部の国では、文字列の先頭に数字を置き、その他の文字は最後に付けます。イタリアの現在の文字列を含む

例:

Via Treviso Mare 2 => need to detect 2 
8C via Sergio Leone => need to detect 8C 
Strada Provinciale 22 C => need to detect 22 C 
19-20 Frazione Santa Maria => need to detect 19-20 
9 - 11 via Giare => need to detect 9 - 11 
Via Cesare Taiti 18-B => need to detect 18-B 

私が取得したい何(イタリアの終わりにすべての数字/グループを置く):

Via Treviso Mare 2 
via Sergio Leone 8C 
Strada Provinciale 22 C 
Frazione Santa Maria 19-20 
via Giare 9 - 11 
Via Cesare Taiti 18-B 

これはイタリアのための一例であり、用それ以外の国では、それは反対ですので、私は2つのケースを作成します。ご提案のための

2 
8C 
22 C 
19-20 
9 - 11 
18-B 

ありがとう:

問題は、私の文字列内のすべてのこれらの可能性を一致させる正規表現を作成することです。あなたの例に合わせ

+0

あなたは何を試しましたか?最大の問題は、正規表現がすべての可能性を解析することができないように、アドレスが非常に大きく異なる可能性があることです。 –

答えて

0

Hereの1つの正規表現、:

/\b\d[\d\- ]*[A-Z]?\b/ 

それは意味:

  • 0以上の数字、スペースや-
  • 続く続く桁
  • を0または1文字で

しかし、すべてのイタリア語アドレスでは機能しない可能性があります。正規表現がそれらをすべて理解することができないようにフォーマットは非常に激しく異なっています。

見つかった正規表現には末尾にスペースが含まれる可能性があることに注意してください。あなたはstripに電話することができます。

+0

私はRubularで正規表現をテストしましたが、それは魅力的なように動作しています!私は必要に応じて他の国にそれを変えます。エリックありがとう! –

関連する問題