Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除第二对括号的正则表达式(仅在可用时)_Php_Regex - Fatal编程技术网

Php 删除第二对括号的正则表达式(仅在可用时)

Php 删除第二对括号的正则表达式(仅在可用时),php,regex,Php,Regex,我有这样的想法: $arr[] = 'Seto Hakashima' $arr[] = 'Anna (segment "Yvan Attal") (as Robin Wright Penn)' $arr[] = 'Sara (segment "Yvan Attal")' 我需要删除第二对括号(仅当存在第二对括号时),并得到以下结果: $arr[] = 'Seto Hakashima' $arr[] = 'Anna (segment "Yvan Attal")' $arr[] = 'Sara (

我有这样的想法:

$arr[] = 'Seto Hakashima'
$arr[] = 'Anna (segment "Yvan Attal") (as Robin Wright Penn)'
$arr[] = 'Sara (segment "Yvan Attal")'
我需要删除第二对括号(仅当存在第二对括号时),并得到以下结果:

$arr[] = 'Seto Hakashima'
$arr[] = 'Anna (segment "Yvan Attal")'
$arr[] = 'Sara (segment "Yvan Attal")'
谢谢

试试看

preg_replace('/^([^(]+(?:\([^)]+\))?).*/','$1', $item);
很少解释

^          - start of the string
[^(]+      - match characters before first bracket
\([^)]+\)  - match first bracket
(?: ... )? - optional
.*         - eat the rest
$1         - replace with match string
或者干脆去掉最后一部分

preg_replace('/(?<=\))\s*\(.*$/','', $item);

(?<=\))    - if there is ) before pattern
(\s*\(.*$  - remove everything after `(` and also zero or more whitespaces before last bracket.
preg_replace('/(?此功能:

<?php
$arr[] = 'Seto Hakashima';
$arr[] = 'Anna (segment "Yvan Attal") (as Robin Wright Penn)';
$arr[] = 'Sara (segment "Yvan Attal")';
$arr[] = 'Anna (segment "Yvan Attal") (as Robin Wright Penn) BONUS text after second group';

foreach ($arr as $item) {
    print preg_replace('/(\([^\)]*\)[^\(]+)\([^\)]*\)\s*/','$1',$item) . "\n";
}

是的,括号内的括号不支持这一点。