извлечь число в строке с регулярным выражением в рубине - PullRequest
0 голосов
/ 27 мая 2018

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

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

Я хотел бы получить 4975603106871514996

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

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Вы можете использовать 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"
0 голосов
/ 27 мая 2018

Ваше регулярное выражение не соответствует, потому что после значения appid нет &.Попробуйте это:

url.to_s[/appid=(\d+)/,1]

Если вы оставите соответствующую часть как .*?, не имея ничего после нее, она будет соответствовать минимальному количеству возможных строк, которое является пустой строкой.Если вы знаете, что appid является самым концом строки, то вы можете использовать .* без ?, но лучше быть точным и указать, что то, что вы ищете, представляет собой последовательность из одного или более (+) десятичные цифры (\d).

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