问题描述
我在下面有一个字符串,从 PHP: Explode comma outside of brackets 的输出开始。
Plum and Raspberry Jam (Glucose-Fructose Syrup,Plum Purée,Sugar,Raspberry Puree,Gelling Agent (Pectin),Acid (Citric Acid),Acidity Regulator (Sodium Citrates,Thiamin (B3)),Colour (Anthocyanins),Preservative (Potassium Sorbate),Flavouring) [23%]
我正在尝试获取 top
级别的括号,因此输出如下:
[0] => "Plum and Raspberry Jam"
[1] => "Glucose-Fructose Syrup,Flavouring"
[2] => "23%"
到目前为止我一直在使用的正则表达式,它适用于其他情况,但不适用于此处:
preg_match_all('~\((.*?)\)|\[.*?]~',"Plum and Raspberry Jam (Glucose-Fructose Syrup,Flavouring) [23%]",$matches)
正如您在 https://regex101.com/r/RzUs8E/1 处看到的那样,它开始匹配第一级括号,但如果找到第二级或第三级右括号,它会在此处停止。
我也试过 \((.*?)\).\[.*?]
,但如果第一个顶级括号是 [
而不是 (
,它不会匹配。
示例数据:
- 李子和覆盆子果酱(葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾),调味剂)[23%]
- 李子和覆盆子果酱(葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、调味剂)(23%)
- 李子和覆盆子果酱 [葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、调味剂] (23%)
- 李子和覆盆子果酱 [23%](葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、调味剂)
- 李子和覆盆子果酱 [23%] [葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、食用香料]
- 李子和覆盆子果酱 (23%)(葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、调味剂)
- 李子和覆盆子果酱 (23%) [葡萄糖-果糖糖浆、李子酱、糖、覆盆子酱、胶凝剂(果胶)、酸(柠檬酸)、酸度调节剂(柠檬酸钠、硫胺素 (B3))、色素(花青素)、防腐剂(山梨酸钾)、食用香料]
非常感谢任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)