我有一个看起来像这样的字符串:
43.3433443 25.3434334), (43.32424432 25.435345345, 43.21313123, 25.32432423423), (43.123123123 25.344234234, 43.1234123123 25.23213123))
我需要使用preg_match_all
提取(和)以及(和)之间的所有内容我有以下正则表达式,用于提取(和)但不是(和)之间的所有内容。
preg_match_all('/\), \(([A-Za-z0-9., ]+?)\)/', $data[$x], $inner);
我尝试过使用:
preg_match_all('/\), \(([A-Za-z0-9., ]+?)\)|\), \(([A-Za-z0-9., ]+?)\)\)/', $data[$x], $inner);
和
preg_match_all('/(?=\), \(([A-Za-z0-9., ]+?)\))(?=\), \(([A-Za-z0-9., ]+?)\)\))/', $data[$x], $inner);
但他们都没有奏效。我将如何包括这两种情况?
谢谢。
更新:
我忘了提到,字符串包含我不想要的多个起始和结束括号内的数字,即两个parantheses ---> ((这里的数字)))< --- 3 parantheses
答案 0 :(得分:3)
使用以下正则表达式:
([^()]+?)\)
<强> Live demo 强>
PHP代码:
preg_match_all('/([^()]+?)\)/', $data[$x], $inner);
上次更新的正则表达式:
([^()]+?)\)(?![)]{2,})
答案 1 :(得分:1)
我可能在这方面有误,但()
中可以找到())
,所以为什么不只是寻找()
并完成:
<?php
$str = '43.3433443 25.3434334), (43.32424432 25.435345345, 43.21313123, 25.32432423423), (43.123123123 25.344234234, 43.1234123123 25.23213123))';
preg_match_all("/\((.*?)\)/",$str,$matches);
echo '<pre>',print_r($matches),'</pre>';