我需要一个分割形式的字符串
2,9.1,The Godfather (1972)
,(这是csv行)
为:
2
9.1
The Godfather
1972
任何有关正常表达的想法?
顺便说一句, 如果你基于你提供的例子知道一个好的正则表达式创建者,那就太好了。 我对此有点新......
10倍!!
答案 0 :(得分:4)
(\d+)\.(\d+\.\d+),(.*?)(?= \()\((\d{4})\)
^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^
2 9.1 Title Year
答案 1 :(得分:1)
我不建议使用正则表达式来拆分csv文件,因为它无法很好地处理逗号转义。但话虽如此,如何使用最简单的可用解决方案?
这样一个最简单的正则表达式可以解决你的问题
'(.*?),(.*?),(.*?)\((\d+)\)'
答案 2 :(得分:0)
Google的一段时间给了我这个: /,(?!(?:[^",]|[^"],[^"])+")/
。似乎将CSV分割得很好。
>>> '2,9.1,The Godfather (1972)'.split(/,(?!(?:[^",]|[^"],[^"])+")/)
["2", "9.1", "The Godfather (1972)"]
答案 3 :(得分:0)
如果您确定格式是静态的,可以使用:
(\d+),(\d+\.\d+),(.*?) \((\d+)\)
但如果它可以包含更多信息,请使用真正的CSV解析器来读取该行,然后使用The Godfather (1972)
拆分(.*?) \((\d+)\)
。
答案 4 :(得分:0)
CSV有很多极端情况,你的正则表达式方法可能会带你进入一个痛苦的世界。
例如,如果标题中有逗号,则标题将被双引号。这将搞砸到目前为止给出的所有正则表达式。