0

私は文字列を持っています:

10 101/12/201209/12/2012 8 75.00 600.00 2 1RPT/136185RAMADA HOTEL & SUITES 

文字列からこの値を取得したい:

136185

を使用しようとしまし/([^\/]*)$/たが、返されました:

136185RAMADA HOTEL  

私は何をすべきか?

4

5 に答える 5

1

using の逆は、次のscanように使用しますsplit

    s = '10 101/12/201209/12/2012 8 75.00 600.00 2 1RPT/136185RAMADA HOTEL & SUITES'
    s.split(/\D+/).last # Everything that isn't a number is a separator, take the last one
    => "136185"

ルールが最後の '/' の後の最初の数字である場合、これはビジネスの名前に数字が含まれていても機能します。

    s = '10 101/12/201209/12/2012 8 75.00 600.00 2 1RPT/136185MOTEL 6'
    s.split(?/).last.to_i # => 136185

「7 Seas Hotel」は引き続き問題を引き起こすことに注意してください

于 2013-01-15T00:41:16.360 に答える
1
str = "10 101/12/201209/12/2012 8 75.00 600.00 2 1RPT/136185RAMADA HOTEL & SUITES"

str[/\d+(?=\D*\z)/]
# => "136185"
于 2013-01-14T23:22:49.953 に答える
1

それが最短の解決策かどうかはわかりませんが、うまくいく(\d+)\D*\Zはずです。

于 2013-01-14T23:23:53.947 に答える
0

試す

string[/.*\b(\d+)/,1]

これは、数字のグループを照合する前に、できるだけ多くの文字を照合します。単語の境界から始めて、貪欲な人が数字のグループの先頭を.*食い​​尽くさないようにします。

または使用する

string.scan(/\d+/).last

これは読みやすくなりますが、純粋な正規表現ではありません。

于 2013-01-14T23:13:29.703 に答える
0

数値が常に 6 桁の場合は、次を使用します。

'10 101/12/201209/12/2012 8 75.00 600.00 2 1RPT/136185RAMADA HOTEL & SUITES'.split[6].split('/').last[0, 6]
=> "136185"

正規表現ソリューションの潜在的な問題は\d+、ホテルの名前が7 Seas.

于 2013-01-15T00:40:03.427 に答える