【发布时间】:2020-02-19 18:27:05
【问题描述】:
早上好, 我需要你的一点帮助。 我需要使用正则表达式拆分文本,但要省略括号中的内容
preg_match_all('/\((?:[^()]|(?R))+\)|\'[^\']*\'|[^(),]+/', $input_lines, $output_array);
我有这个字符串:
Test A, Test B, Test C (data1, data1)
预赛我们这样做:
0 => Test A
1 => Test B
2 => Test C
3 => (data1, data1)
我如何实现这个结果?
0 => Test A
1 => Test B
2 => Test C (data1, data1)
我需要忽略括号中的内容,只分隔其余的内容。
提前感谢您的帮助。
编辑
这最终解决了我的情况。我尝试使用 preg split。
preg_split('/,(?![^(]*\)) /', $input_line);
【问题讨论】:
-
对于给定的字符串,并且没有任何更具体的要求或限制,我会使用
explode(',', 'Test A, Test B, Test C (data1, data1)', 3)而不是正则表达式 ... -
Array ( [0] => Test A [1] => Test B [2] => Test C (data1, data1), Test D (data1, data1), Test E (data1, data1) ) -
那么您现在想说的是,您需要匹配的内容比您给出的示例实际显示的内容更多吗?那么举一个更好的例子,分别。 正确的解释你需要从什么开始匹配。
-
我有更多字符串,你需要用分隔符(逗号)将它们分开,以便忽略括号中的(逗号),因为括号是参数的一部分。
-
Teď jsem zkoušel tohle:
preg_split('/,(?![^(]*\)) /', $input_line);a to mi zatím funguje dle potřeb,