Извлечь число в строке с регулярным выражением в рубине

У меня есть эта строка

url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"

Я хочу получить 4975603106871514996

Я пробовал это

url.to_s[/\appid\=(.*?)\&/, 1]
=> nil

🤔 А знаете ли вы, что...
Ruby активно используется во множестве веб-сервисов и стартапов.


65
2

Ответы:

Ваше регулярное выражение не совпадает, потому что после значения 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"