У меня есть URL строка:Извлечение несколько моделей из URL строки
http://localhost:3000/user/event?profile_id=2&profile_type=UserProfile
Я хочу, чтобы извлечь «2» и «UserProfile», где они могут измениться.
Я пытался использовать оба match
и scan
но ни возвращает результаты:
url = "http://localhost:3000/user/event?profile_id=2&profile_type=UserProfile"
m = /http(s)?:\/\/(.)+\/user\/event?profile_id=(\d)&profile_type=(\w)/.match(url)
=> nil
url.scan /http(s)?:\/\/(.)+\/user\/event?profile_id=(\d)&profile_type=(\w)/
=> []
Любая идея, что я могу делать неправильно?
В вашем конкретном регулярном выражении, вам нужно бежать? между событием и profile_id, так что это event \? profile_id, и у вас будет фактический объект MatchData. Теперь вам нужно удалить круглые скобки из (s) и (.) И добавить + в (\ w), чтобы он (\ w +), и вы получите желаемые результаты. – daremkd
Не используйте для этого регулярное выражение. Они слишком хрупкие, чтобы обрабатывать URL-адреса, которые могут изменить порядок. –