[英]Python RegEx extract text between two patterns
我正在尝试为以下项目提取lat和lng的值:
coordinates =
[<div class="store-map">\n<div id="map" style="width: 100%; height: 400px;"></div>\n<script>\r\n function initMap() {\r\n var myLatLng = {\r\n lat: 42.050994,\r\n lng: -88.077711 };\r\n\r\n
但是,当我应用此正则表达式时-
found = re.search('lat:(.*),', coordinates,).group(1)
返回“ lat:”之后的所有内容。
但是,所需的结果只是数字,该数字一到达逗号就会停止。 这对我来说很奇怪,因为即使rubular都表明代码应该可以工作。 关于我在这里做错什么的任何想法?
PS我花了一些时间,并研究了关于stackoverflow的所有相关解决方案,但是-没有骰子。
使用re.findall
函数的正确方法:
import re
coordinates = '[<div class="store-map">\n<div id="map" style="width: 100%; height: 400px;"></div>\n<script>\r\n function initMap() {\r\n var myLatLng = {\r\n lat: 42.050994,\r\n lng: -88.077711 };\r\n\r\n '
result = re.findall(r'\b(?:lat|lng): -?\d+\.\d+', coordinates)
print(result)
输出:
['lat: 42.050994', 'lng: -88.077711']
使用以下命令提取两个值:
import re
text = """[<div class="store-map">\n<div id="map" style="width: 100%; height: 400px;"></div>\n<script>\r\n function initMap() {\r\n var myLatLng = {\r\n lat: 42.050994,\r\n lng: -88.077711 };\r\n\r\n """
lat, lng = map(float, re.findall(r'(?:lat|lng):\s+([0-9.-]*?)[, ]', text))
print lat, lng
给你两个浮点数为:
42.050994 -88.077711
这是因为.*
是贪婪的意思,它会将所有内容匹配到最后一个逗号。 更改为.*?
:
lat:(.*?),
^
add this
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.