Задать вопрос
@Taya93
Брест

Как регулярными выражениями достать координаты из onclick?

есть html код
<div class="shop_descr">
                        <div class="shop_city">Минск</div>
                        <div class="shop_name">Магазин &quot;Дом натуральной косметики&quot;</div>
                                                <a href="#top" title="показать на карте" class="shop_addr spec_decor"
                           onclick="MapWork('gm_1', '53.964127393', '27.6241564751')">
                            <i class="glyphicon glyphicon-map-marker"></i>
                            <span class="dotted">ТЦ Expobel, пересечение ул. Мирошниченко и МКАД</span></a>

                        <div class="shop_phone">
                                                            <a href="tel:+375172379448"
                                   class="phone_link">+375 (17) 237-94-48</a><br/>
                                                       </div>
                    </div>


как мне достать из onclick координаты ?( '53.964127393', '27.6241564751' )
  • Вопрос задан
  • 225 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
obezh
@obezh
Python разработчик
import re

string = '''onclick="MapWork('gm_1', '53.964127393', '27.6241564751')">'''
pattern = r", ?\'([\d\.]+)" 
result = re.findall(pattern,string)

print(result[0],result[1])

Костыль
На случай, когда туго с регулярками
import re

string = '''onclick="MapWork('gm_1', '53.964127393', '27.6241564751')">'''
result = re.findall(r'onclick="MapWork(.+?)"',string)
res = re.findall("'(.+?)'",str(result))
print(res[1],res[2])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Tomio
@Tomio
backend developer (python, php)
Как-то так можно - https://regex101.com/r/mn2dm0/2/ - разбито на 2 группы с координатами
$pattern = "/onclick=\"\w+\(\'[\d_\w]+1\', ?\'([\d\.]+)\', ?\'([\d\.]+)\'\)\"/gmi";
Ответ написан
Комментировать
@ElefanObi
Если нужны только координаты и вы точно знаете, что других строк, похожих на координаты нет
\d+\.\d+
Если есть другие похожие строки, то можно сначала получить строку с аргументами из MapWork
r"(?<=(onclick\=\"MapWork\()).+\'"
'gm_1', '53.964127393', '27.6241564751'
а потом уже распарсить полученную строку первым выражением.
Флаг global во всех случаях включен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽