php - PHP preg_split 按组 1 拆分
问题描述
我有这些输入:
Rosemary Hess (2018) (Germany) (all media)
Jackie H Spriggs (catering)
我想用第一个括号将它们分开,我想要的输出:
array:2 [
0 => "Rosemary Hess"
1 => "(2018) (Germany) (all media)"
]
array:2 [
0 => "Jackie H Spriggs"
1 => "(catering)"
]
我尝试了这些但无法正常工作:
preg_split("/(\s)\(/", 'Rosemary Hess (2018) (Germany) (all media)')
但它用括号分割每个空格并返回五个项目而不是两个。
解决方案
您可以使用
$strs= ["Rosemary Hess (2018) (Germany) (all media)", "Jackie H Spriggs (catering)"];
foreach ($strs as $s){
print_r( preg_split('~\s*(?=\([^()]*\))~', $s, 2) );
}
// => Array ( [0] => Rosemary Hess [1] => (2018) (Germany) (all media) )
// => Array ( [0] => Jackie H Spriggs [1] => (catering) )
第三preg_split
个$limit
参数设置为2
使其与匹配的模式的第一次出现分割字符串:
\s*
- 0+ 个空格(?=\([^()]*\))
- 后跟(
, 0 个或多个字符,而不是(
and)
然后是 a)
。
推荐阅读
- database - Power BI - 如何可视化具有特定值的行的百分比以及这些行中具有高于或低于数字的值的百分比?
- reactjs - fetchMock:未捕获的类型错误
- java - Mapbox:如何显示驾驶/骑自行车/步行选项
- powerbi - 建模数据仓库多语言
- c++ - 从自动模板参数回调中提取参数
- java - 即使达到超时限制,Zookeeper 也不会过期会话
- javascript - 使用 Javascript 检查文件是否已下载
- javascript - 计算,打印更改项目,不重复
- swift - 无法在子类 FUIAuthPickerViewController 上显示背景
- android - Ionic v4 在物理设备中出现黑屏