2016-08-22 3 views
0

以下のサンプルソースから、すべての数字(カンマと小数点記号を含む)を取り出すにはどうすればよいですか?この例では、「2,078」、「1.07」、「1.1」、「1」が一致するようにします。カンマと小数に関係なく、指定した単語の前の数字はどのように一致させるのですか?

これは私がこれまで持っているものである4つのベッド3フル、1 WC主2,078平方フィート1.07ウィジェット1.1ウィジェット1つのウィジェット千のウィジェット

(\d{1,3}(.?\d{2})?)(?=\swidget) 

が..and regexrでの結果のスクリーンショット:

enter image description here

+1

、それは続いていない' widget'は何をしたいということですか? – Toto

+0

2つの '1 'が見つかりました、そうですか? '1ウィジェット '、次に' 1,000ウィジェット '。また、 '.'は正規表現の10進数であると仮定するとエスケープする必要があります。 – chris85

+0

'1.1'をマッチさせたいのであれば、なぜ' \ d {2} 'ではなく' \ d + 'を入れましたか? – revo

答えて

0
\D(\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?)(?=\swidget) 

説明:: `2,078`が一致しなければならないのはなぜ

\D     : a non digit 
(     : start group 1 
    \d{1,3}   : 1 to 3 digits 
    (?:,\d{3})*  : 0 or more comma and 3 digits 
    (?:\.\d{1,2})? : 0 or 1 dot and 1 or 2 digit 
)     : end group 1 
(?=\swidget)  : followed by space and widget 

See in action

関連する問題