2017-08-28 5 views
-1

文字列から大きな数値を取得する必要がある状況があります。私が働いている2例は以下のとおりです。番号は69235MRuby正規表現を使用して数値を解析する

のように、数はそれに追加の手紙を持っている265038960

2)のように、数字のみで構成されている

1)私は、これは「M」することなく、第2のケースとグラブ「69235」のために動作しますが、文字が見つからなかった最初のケ​​ースで休憩

(\d.+)[A-Z] 

を正規表現パターンを使用してきました。

文字列の最後に文字が存在するかどうかにかかわらず、正規表現内の条件を使用して番号を解析するにはどうすればよいですか?

+0

の理由だけではなく、 '/ \ dの+ /'使わないのでしょうか? 's [/ \ d + /]'?あなたは特定の*文字列だけにマッチする必要がありますか?(そしてそれらを正規表現で事前検証しますか?)とにかくアンカーが必要です。 '' \ {A \ Z}、\ '1 \'を試してください。あるいは、より大きな文字列からこれらの大きな桁のチャンクを抽出していますか?次に、 's.scan(/ \ b(\ d +)[A-Z]?\ b /)'を使用してください。 –

+0

@WiktorStribiżew – vcsjones

+2

'[A-Z]'の後に '?'を追加します。 – kabanus

答えて

1
(\d+[A-Z]?)  # capture any number of digits, together with 0 or 1 uppercase letter 

文字をキャプチャするかどうかは不明です。あなたが手紙を処分したい場合:

(\d+)[A-Z]?  # capture any number of digits, followed by 0 or 1 uppercase letter 

ルックexample

関連する問題