Получить номер из строкового шаблона, используя регулярное выражение - PullRequest
2 голосов
/ 29 марта 2009

У меня есть строка "Результат поиска: 16143 результатов найдено", и мне нужно извлечь из нее 16143.

Я пишу в ruby, и я знаю, что было бы чисто получить его, используя RegEx (в отличие от разделения строки на основе разделителей)

Как бы мне получить номер из этой строки в рубине?

Ответы [ 6 ]

11 голосов
/ 29 марта 2009
> foo = "Search result:16143 Results found"
=> "Search result:16143 Results found"
> foo[/\d+/].to_i
=> 16143
2 голосов
/ 29 марта 2009

Я не уверен в синтаксисе в Ruby, но регулярное выражение будет "(\ d +)", что означает строку цифр размером 1 или более. Вы можете попробовать это здесь: http://www.rubular.com/

Обновлен: Я полагаю, что синтаксис /(\d+)/.match(your_string)

1 голос
/ 29 марта 2009
 # check that the string you have matches a regular expression
 if foo =~ /Search result:(\d+) Results found/
   # the first parenthesized term is put in $1
   num_str = $1
   puts "I found #{num_str}!"
   # if you want to use the match as an integer, remember to use #to_i first
   puts "One more would be #{num_str.to_i + 1}!"
 end
1 голос
/ 29 марта 2009

Для подхода без регулярных выражений:

irb(main):001:0> foo = "Search result:16143 Results found"
=> "Search result:16143 Results found"
irb(main):002:0> foo[foo.rindex(':')+1..foo.rindex(' Results')-1]
=> "16143"
1 голос
/ 29 марта 2009

Это регулярное выражение должно делать это:

\d+
0 голосов
/ 13 декабря 2016
> foo = "Search result:16143 Results found"
=> "Search result:16143 Results found"
> foo.scan(/\d/).to_i
=> 16143
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...