@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' )
  • Вопрос задан
  • 84 просмотра
Решения вопроса 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
Как-то так можно - 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 во всех случаях включен.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы