【发布时间】:2013-12-26 11:42:14
【问题描述】:
我正在尝试编写一个正则表达式来匹配出现在封闭字符之间的所有字符串(很可能是" - 双引号)。这是我在尝试解析 csv 文件中的一行时经常遇到的场景。
所以我有一个示例行,例如:
"Smith, John",25,"21/45, North Avenue",IBM
尝试了以下正则表达式:
"(.*)"
但它的获取方式如下:
我期望输出如下:
Smith, John
25
21/45, North Avenue
IBM
我编写的正则表达式试图在我的示例中捕获" 之间的内容。但是,以上是我期望的输出。
虽然有一种模棱两可的地方:我不是在寻找像:,25, 这样的匹配项。这有点让我想知道正则表达式在这里是否可行。
正确的写法是什么?
【问题讨论】:
-
"([^"]*)"或"(.*?)"会起作用,但会产生另一个问题。 -
您将使用哪种语言的正则表达式?
-
@SalmanA 你能解释一下有问题的场景吗...
-
@deostroll:我看到两个问题:1)您必须处理捕获组,2)您必须处理转义引号。
-
我宁愿使用一个好的 CSV 解析器库而不是使用 RegEx。问题是
John Smith,25,"21/45, North Avenue",IBM和"John ""Microsoft Guy"" Smith",25,"21/45, North Avenue",IBM都是 CSV 数据的有效示例。