Как написать регулярное выражение для извлечения числовых значений из строки? - PullRequest
4 голосов
/ 24 января 2012

У меня есть строка str = "$ 9.0 / hr" или str = "$9.0/hr". В этом случае мне нужно только целочисленное значение 9.0

Язык Ruby 1.9.2

Ответы [ 4 ]

7 голосов
/ 24 января 2012

Я бы использовал:

number = str[ /\d*(?:\.\d+)?/ ]

Или, если для значений меньше 1,0 требуется начальный 0,

number = str[ /\d+(?:\.\d+)?/ ]

Если у вас могут быть другие числа в строке, и вам нужен только (первый) номер, перед которым стоит знак доллара:

number = str[ /\$\s*(\d+(?:\.\d+)?)/, 1 ]

Если гарантируется, что после этого будет (должен) быть десятичный знак и цифра (цифры):

number = str[ /\$\s*(\d+\.\d+)/, 1 ]

Надеемся, что вы можете смешивать и сочетать некоторые из этих решений, чтобы получить то, что вам нужно.

6 голосов
/ 25 января 2012

Нет регулярных выражений:

str.delete("^0-9.")
4 голосов
/ 24 января 2012

Если ваши цены всегда имеют формат dollars.cents (что вероятно для цен), используйте это регулярное выражение:

"$ 9.0 / hr".match(/\d+\.\d+/)[0] # => 9.0
"$9.0/hr".match(/\d+\.\d+/)[0] # => 9.0

В противном случае вы должны взять регулярное выражение из ответа Phrogz.

1 голос
/ 24 января 2012

Я не знаю ruby, но регулярное выражение должно быть \d+(?:\.\d+)?.Это также будет работать с "$9/hr"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...