我正在尝试从reddit注释中提取各种格式的坐标。我希望能够提取Google地图支持的两种不同的坐标格式:
73.180633, -98.100802
和73°10'50.3"N 98°06'02.9"W
我可以使用以下表达式以第一种格式提取坐标:
([-+]?\d{1,2}[.]\d+),\s*([-+]?\d{1,3}[.]\d+)
但是,我无法成功找到或创建与第二种格式匹配的模式。
答案 0 :(得分:1)
这将用于第二种格式:\d{1,3}°\d{1,3}'\d{1,3}\.\d\"[N|S]\s\d{1,3}°\d{1,3}'\d{1,3}\.\d\"[E|W]
请参阅:https://regex101.com/r/LN1igj/8
有两个非常相似的小组,显然不可能简化。参见How to capture multiple repeated groups?。
要在一个正则表达式中捕获两种格式:(?:((?:[-+]?\d{1,2}[.]\d+),\s*(?:[-+]?\d{1,3}[.]\d+))|(\d{1,3}°\d{1,3}'\d{1,3}\.\d\"[N|S]\s\d{1,3}°\d{1,3}'\d{1,3}\.\d\"[E|W]))
请参阅:https://regex101.com/r/LN1igj/7
但这不再是真正可读的。我建议用代码解决这个问题。
答案 1 :(得分:0)
请在正则表达式下面尝试。
public function sales()
{
return $this->hasMany('App\Models\Sale');
}