明月笑刀无情
你可以使用(?<=\[)[^]\s]+(?=])请参阅正则表达式和PHP 演示。请注意,该$matches结构在模式中没有捕获组时更清晰,所有上下文都使用非消耗性环视检查。细节(?<=\[)[- 需要立即在当前位置左侧的正向后视[^]\s]+ - 除了](不需要转义它,因为它是否定字符类中的第一个字符)和空格之外的1+ 个字符(?=])]- 需要紧靠当前位置右侧的正向前瞻(]在字符类之外并不特殊)。PHP 演示:$arr = ['[text* your-name]','[email* your-email]','[text your-subject]','[textarea your-message]','[submit "Verzenden"]','[your-subject]','[your-name]','[your-email]','[your-message]'];foreach ($arr as $s) { if (preg_match_all('~(?<=\[)[^]\s]+(?=])~', $s, $matches)) { print_r($matches[0]); }}输出:Array( [0] => your-subject)Array( [0] => your-name)Array( [0] => your-email)Array( [0] => your-message)