正则表达式:删除双括号但保留单个

时间:2013-09-16 02:04:52

标签: php regex preg-replace

我有一堆协调数据以下列格式返回:

TYPE ((lat long, lat long), (lat long, lat long), (lat long))

我正在努力创建一个正则表达式,它将删除除数字,空格,逗号,超量和SINGLE括号之外的任何内容;我不能为我的生活弄清楚如何删除双括号而不是单个。我不需要用单个替换双括号,只需删除它们。

到目前为止,我想出的是:

preg_replace('/[^0-9,.-\s\(\)]/', '', $val);

但这会删除所有括号,这不是我想要的,因为我必须根据这些括号爆炸()它。我一直在尝试使用前瞻/后瞻性断言,但似乎无法将其弄好......

1 个答案:

答案 0 :(得分:0)

如果不使用任何前瞻,你可以使用它:

$s = 'TYPE ((lat long, lat long 234), (lat long, 999 lat long), (0 lat long))';
$r=preg_replace(array('/\(\s*\(/', '/\)\s*\)/', '/[^\d,.\s-()]/'), array('(', ')', ''), $s);
//=>  ( ,   234), ( , 999  ), (0  )

编辑:要删除双(()),请使用以下代码:

$r = preg_replace('/\(\s*\(|\)\s*\)|[^\d,.\s-()]/', '', $s);