从较大的文本正文中获取逗号分隔的纬度和经度值

发布于 2025-01-04 15:05:04 字数 367 浏览 1 评论 0原文

我有一个如下所示的字符串:

".......mapsearch"), '52.486683, -4.044363', options......"

我想从字符串中检索 2 个数字(长和纬度) - 我不介意是否将它们作为单个字符串一起检索,并在中间包含逗号和空格。

我知道我想使用一个表达式来匹配和忽略从开始到包括 mapsearch") 的任何内容,' 以及字符串末尾到 ' 的相同内容, options 模式。

UPDATE

该字符串还将包含一系列其他字符,例如 { } ( ) = : / 以及所需匹配项之前和之后的数字。

I have a string like the one below:

".......mapsearch"), '52.486683, -4.044363', options......"

I want to retrieve the 2 numbers (long & lat) from the string - I don't mind if I retrieve them together as a single string complete with the comma and space in between.

I know that I want to use an expression to match and ignore anything from the start up to and including the mapsearch"), ' and the same for the end of the string to the ', options pattern.

UPDATE

The string will also contain a range of other characters like { } ( ) = : / and numbers before and after the desired match..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

妄司 2025-01-11 15:05:04

这将起作用,尽管它很难看:

/mapsearch\"\), '(-?\d+(?:\.\d+)?), (-?\d+(?:\.\d+)?)', options/

数字可以是负数或正数,并且它也将匹配整数和小数值。该模式将把两个数字作为单独的组返回。

This will work, as ugly as it is:

/mapsearch\"\), '(-?\d+(?:\.\d+)?), (-?\d+(?:\.\d+)?)', options/

The numbers can be negative or positive, and also it will match integers and decimal values. The pattern will return both numbers as a separate group.

preg_match("/'([^,]+), ([^']+)'/", $string, $matches);
echo $matches[0]; // 52.486683
echo $matches[1]; // -4.044363
preg_match("/'([^,]+), ([^']+)'/", $string, $matches);
echo $matches[0]; // 52.486683
echo $matches[1]; // -4.044363
渔村楼浪 2025-01-11 15:05:04

假设它是单引号中唯一的数字:

'-?\d+.\d+, -?\d+.\d+'

Assuming it's the only numbers in single quotes:

'-?\d+.\d+, -?\d+.\d+'
烟若柳尘 2025-01-11 15:05:04

您可以尝试以下操作:

(\-?[0-9]+\.[0-9]+\,\ \-?[0-9]+\.[0-9]+)

提取

52.486683,-4.044363

You can try this:

(\-?[0-9]+\.[0-9]+\,\ \-?[0-9]+\.[0-9]+)

to extract

52.486683, -4.044363

悸初 2025-01-11 15:05:04

在这种情况下,我将使用 Metalfrog 的解决方案并进行一些更改。

如果您确定只有字符串有逗号,没有其他内容,则爆炸,然后检查它是否是整数/浮点数,或者如果您知道它是第 n 项,则只需获取 $array[$n]。

否则爆炸并使用这个 (需要一些编辑)以确定它是否是坐标。

In this case, I'd use metalfrog's solution with some changes.

If you're sure that only the string has a comma, nothing else, then explode, and either check if it's an integer/float OR if you know that it's the nth item, just get $array[$n].

Else explode and use this (needs some editing) to determine if it is a coordinate or not.

戴着白色围巾的女孩 2025-01-11 15:05:04
$subject = ".....mapsearch\"), '52.486683, -4.044363', options......";
$regex = '/mapsearch\"\), \'(-?[0-9]{1,3}\.[0-9]{6}, -?[0-9]{1,3}\.[0-9]{6})\', options/';
if (preg_match($regex, $subject, $matches)){
    print_r($matches);

这会给你:

Array
(
    [0] => mapsearch"), '52.486683, -4.044363', options
    [1] => 52.486683, -4.044363
)
$subject = ".....mapsearch\"), '52.486683, -4.044363', options......";
$regex = '/mapsearch\"\), \'(-?[0-9]{1,3}\.[0-9]{6}, -?[0-9]{1,3}\.[0-9]{6})\', options/';
if (preg_match($regex, $subject, $matches)){
    print_r($matches);

This will give you:

Array
(
    [0] => mapsearch"), '52.486683, -4.044363', options
    [1] => 52.486683, -4.044363
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文