正则表达式获得"Aardal,Prof.dr.ir.KI(Karen)"的名字

Tho*_*mas 2 php regex

任何人都可以帮我写一个正则表达式来过滤字符串中的括号之间的名称,如下所示: Aardal, Prof.dr.ir. K.I. (Karen)

我试过了

preg_match('~[^/]([^/])~', $fullname, $matches);
var_dump($matches);
Run Code Online (Sandbox Code Playgroud)

但回报是

array
  0 => string 'Aa' (length=2)
  1 => string 'a' (length=1)
Run Code Online (Sandbox Code Playgroud)

多谢你们!

Jul*_*ian 6

  1. 你可以跳过任何字符,除了 (
  2. 然后匹配(和任何角色)
  3. 然后匹配 )
  4. 介于两者之间(并且)现在是捕获组"名称"

正则表达式:

[^\(]*\((?<name>[^\)]+)\)
Run Code Online (Sandbox Code Playgroud)

使用Expresso工具进行测试.这个正则表达式匹配两组:

  1. 整个字符串:"Aardal,Prof.dr.ir.KI(Karen)"
  2. 命名组'名称':"凯伦"

笔记:

  • (?<name>...) 是命名组
  • 为了匹配(等,我们必须用斜线来逃避它.