我有一个如下所示的字符串:
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);
但它们都不起作用。我该如何将这两种情况都包括在内?
谢谢。
更新:
我忘了提及,该字符串包含我不想要的多个开始和结束括号内的数字,即两个括号 ---> (( 这里的数字 ))) <---3 个括号
最佳答案
使用以下正则表达式:
([^()]+?)\)
<强> Live demo
PHP 代码:
preg_match_all('/([^()]+?)\)/', $data[$x], $inner);
上次更新的正则表达式:
([^()]+?)\)(?![)]{2,})
关于用于多个括号的 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293193/