У меня есть эта строка
url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"
Я хочу получить 4975603106871514996
Я пробовал это
url.to_s[/\appid\=(.*?)\&/, 1]
=> nil
🤔 А знаете ли вы, что...
Ruby активно используется во множестве веб-сервисов и стартапов.
Ваше регулярное выражение не совпадает, потому что после значения appid нет &
. Попробуй это:
url.to_s[/appid=(\d+)/,1]
Если вы оставили совпадающую часть как .*?
, после которой ничего не было, она будет соответствовать минимальному возможному количеству строки, которая является пустой строкой. Если вы знаете, что appid - это самый конец строки, вы можете использовать .*
без ?
, но лучше быть точным и указать, что вы ищете серию из одной или нескольких (+
) десятичных цифр. (\d
).
Вы можете использовать String#match
с сопоставителем регулярных выражений \ d для сопоставления с \d+
, что означает одну или несколько цифр.
url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"
match = url.match(/appid\=(\d+)/)
# => #<MatchData "appid=4975603106871514996" 1:"4975603106871514996">
puts match[0]
# => "appid=4975603106871514996"
puts match[1]
# => "4975603106871514996"