|
1
19
一种方法是使用
上面的regex匹配一个或多个:
这种方法的一个奇怪之处是,相邻的分隔符被视为单个分隔符。也就是说,您不会看到空字符串。这可能是一个bug或特性,具体取决于您的用例。 还要注意,正则表达式是 不 适用于有可能嵌套的情况。因此,例如,这将不正确地拆分:
如果需要处理嵌套,最好的办法是将字符串分割成parens、commas和其他东西(本质上是标记化它——这一部分仍然可以用regex完成),然后遍历这些标记重新组合字段,在进行时跟踪嵌套级别(这个跟踪嵌套级别就是正则表达式不能自己执行)。 |
|
|
2
5
|
|
|
3
5
lookahead将所有内容匹配到下一个左括号或字符串末尾, 敌我识别 中间没有右括号。这样可以确保逗号不在一组括号内。 |
|
|
4
2
对人类可读regex的尝试:
输出:
|
|
5
1
我的答案不会使用regex。
我认为简单的字符扫描器和状态“
我的尝试:
输出:
|
|
|
6
1
以下是我过去在这种情况下使用的一种通用技术:
使用
如果你没有
使用方法如下:
|
|
|
7
1
这篇文章对我帮助很大。我想用引号外的逗号拆分字符串。我用这个做开胃菜。我的最后一行代码是
|
|
|
8
0
我当然同意上面的@wogan,使用csv模型是一个很好的方法。已经说过,如果您仍然想尝试一个regex解决方案,请尝试一下,但是您必须使它适应Python方言。
高温高压 |
|
|
9
0
分裂“”
您可以做进一步的检查以获取那些不随()一起提供的名称。 |
|
|
10
-1
如果您的数据中有任何错误或噪音,上述答案都不正确。 如果您知道每次数据都是正确的,那么很容易找到一个好的解决方案。但是如果有格式错误会发生什么呢?你想发生什么? 假设有嵌套括号?假设有不匹配的括号?假设字符串以逗号结尾或以逗号开头,或者一行中有两个逗号? 以上所有的解决方案都会产生或多或少的垃圾,并且不会向您报告。 如果由我决定的话,我会从一个非常严格的限制开始,限制“正确”的数据是什么——没有嵌套的括号,没有不匹配的括号,在注释之前、之间或之后没有空段——在我进行验证时进行验证,如果我无法验证,则引发异常。 |