任何人都可以帮我写一个正则表达式来过滤字符串中的括号之间的名称,如下所示:Aardal, Prof.dr.ir. K.I. (Karen)
我试过
preg_match('~[^/]([^/])~', $fullname, $matches);
var_dump($matches);
但回报是
array
0 => string 'Aa' (length=2)
1 => string 'a' (length=1)
谢谢你们!
答案 0 :(得分:6)
(
(
以及)
)
(
和)
之间现在是捕获组“名称”
醇>
正则表达式:
[^\(]*\((?<name>[^\)]+)\)
使用工具Expresso进行测试。这个正则表达式匹配两组:
注意:
(?<name>...)
是指定的群组(
等,我们必须用斜杠来逃避它。答案 1 :(得分:0)
一些标准字符串函数也会这样做:
function extractName($subject)
{
$openIndex = strpos($subject, '(');
if ($openIndex !== false)
{
$closeIndex = strpos(substr($subject, $openIndex + 1), ')');
if ($closeIndex !== false)
return substr($subject, $openIndex + 1, $closeIndex);
}
else
return '';
}
echo extractName('Aardal, Prof.dr.ir. K.I. (Karen)');
答案 2 :(得分:0)
尝试关注一个
.*\((.*)\)
然后捕获第一组值,它将匹配以下内容:
Aardal,Prof.dr.ir。 K.I. (的卡伦强>)