regex - Extract a word from a sentence in Ruby -
i have following string:
str = "xxx host:1233455 yyy zzz!"
i want extract value after host:
string.
is there optimal way in ruby using regexp, avoiding multiple loops? solution welcome.
if have numbers, use following regex:
(?<=host:)\d+
the lookbehind find numbers right after host:
.
see ideone demo:
str = "xxx host:1233455 yyy zzz!" puts str.match(/(?<=host:)\d+/)
note if want match alphanumerics , not punctuation, can replace \d+
\w+
.
also, if have dots, or commas inside, can use
/(?<=host:)\d+(?:[.,]\d+)*/
it extract values 4,445
or 44.45.455
.
update:
in case need more universal solution (especially if need use regex on platform look-behind not supported (as in javascript), use capture group approach:
str.match(/\bhost:(\d+)/).captures.first
note \b
makes sure find host:
whole word, not localhost:
. (\d+)
capture group value can refer backreferences, or via .captures.first
in ruby.
Comments
Post a Comment