Предположим следующее мои данные,Запись Regex в улье
string
&geoLati=33.75875&
&loclat=39.5586&
&ang_lat_add_one_more=35.4789&
&slat=45.2563&
&LAT=12.5698&
&vloclat=65.4789&
&latpoi=35.2478&
&lat_lkj=25.6523&
&someother_lat=25.6523&
&lat=65.3214&lat=98.4562&
У меня есть длинная строка (URL), и я хочу, чтобы проверить на широчайшие ключевое слово присутствует в строке, а затем проверить ближайший " = "и разобрать значение до следующего" & ". В идеале я хочу написать выражение, которое будет отделять значения от вышеуказанного набора данных.
Следующая моя попытка,
select regexp_extract(string, 'lat=(.*?)(&)') as output
Это, кажется, хорошо работать с большинством из них, но не работает с немногими, а также. Ниже приведен вывод,
output
""
39.5586
""
45.2563
""
65.4789
""
""
25.6523
65.3214
Может ли кто-нибудь помочь мне в модификации выражения, чтобы получить все значения? Я хочу проверить ключевое слово lat независимо от случая и искать ближайший знак «=», а затем анализировать значения до следующего «&».
Мой ожидается выход,
output
33.75875
39.5586
35.4789
45.2563
12.5698
65.4789
35.2478
25.6523
25.6523
65.3214
Любая помощь будет оценена.
Thanks
TRY 'ш = ([^ &] +)' или даже '[^&] + '. –
@ WiktorStribiżew Спасибо за ответ. это не работает с «geoLati» – Observer
Вы не уточнили ожидаемый результат. Затем попробуйте '(? I) lat \ w * = ([^ &] +)' –