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";
}
是的,括号内的括号不支持这一点。