【发布时间】:2018-04-20 15:46:07
【问题描述】:
在给定一组分隔符(例如; 和,)的情况下,我将如何编写正则表达式,我可以在这些示例中得到以下结果:
coffee, water; tea -> [coffee, water, tea]
"coffee, black;", water; tea -> ["coffee, black;", water, tea]
为了澄清,常规文本不能有空格,引用文本可以有空格,引号内的分隔符被忽略,所有文本都由分隔符分隔。
我自己一直在尝试使用正则表达式,但没有得到我想要的结果。我也在没有前瞻/后视的环境中工作。关于如何实现这一点的任何想法?
【问题讨论】:
-
什么实现了 split ?通常拆分为
\s*(?:("[^"]*")|[,;])\s* -
只是为了确定:
black不应该在第二个结果列表中吗? -
@raul.vila 把球丢在那里。谢谢。
-
@m0meni 如果值不包含在引号中,是否可以包含空格字符?
-
\s*(?:("[^"]*")\s*[,;]|[,;])\s*更准确。在 Perl 中,这将在元素位于捕获组内时创建一个元素。否则,它会去除分隔符(此处为空格和 [,;] )
标签: regex parsing delimiter re2