如何构建正则表达式来解析逗号分隔值但忽略双引号中的逗号?

use*_*186 3 regex unix perl expression

示例字符串:

2011-03-09,4919 1281 0410 9930,55107,SAZB2314,"John, Doe" ,1-888-888-4452 ext 1813
Run Code Online (Sandbox Code Playgroud)

需要标记所有逗号,但不能标记双引号中的逗号.

Eug*_*ash 17

您可以使用Text::CSVCPAN.


sha*_*rey 10

或者使用Text :: CSV_XS,它可以做同样的事情,但速度更快.

  • 它不一定更快,因为Text :: CSV会导致Text :: CSV_XS被使用(如果可用).我建议使用Text :: CSV_XS,因为它消除了使用Text :: CSv的额外复杂性,并且保证在较慢的Text :: CSV_PP上获得Text :: CSV_XS. (2认同)