gpt4 book ai didi

php - 正则表达式取值在括号 "()"之间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:07 27 4
gpt4 key购买 nike

我很不会写正则表达式。

我正在尝试获取括号“()”之间的值。像下面这样的东西......

$a = "POLYGON((1 1,2 2,3 3,1 1))";
preg_match_all("/\((.*)\)/U", $a, $pat_array);
print_r($pat_array);

但这会给我一些元素,比如...

Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
)

[1] => Array
(
[0] => (1 1,2 2,3 3,1 1
)
)

但我想获取“1 1,2 2,3 3,1 1”作为输出。

我知道我们可以在得到这个输出后修剪括号。但是,如果使用正则表达式完成,那就太好了。

提前致谢。


解决方案:根据 @anubhava回答:

使用@anubhava的正则​​表达式。

示例:

$a = "POLYGON((1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1))";

如果打印这个正则表达式的结果,你会得到这样的...

Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
[1] => (1 1,2 2,3 3,1 1)
[2] => (1 1,2 2,3 3,1 1))
)

[1] => Array
(
[0] => 1 1,2 2,3 3,1 1
[1] => 1 1,2 2,3 3,1 1
[2] => 1 1,2 2,3 3,1 1
)
)

看看第二个数组元素,它正是我们想要的。

仅供引用:我用它从 MySQL 数据库中获取 POLYGON 的 GEOMETRY 数据,然后我用数组处理它以获得所有多边形节点的所有纬度和经度。

最佳答案

使用基于否定的正则表达式模式并从捕获的第 1 组中获取结果:

preg_match_all('/\(+([^()]*)\)+/', $a, $pat_array);
print_r($pat_array[1]);

[^()]* 将匹配任何不是 () 的字符。

输出:

Array
(
[0] => 1 1,2 2,3 3,1 1
)

关于php - 正则表达式取值在括号 "()"之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32863322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com