我有一个 CSV 文件,其中包含与此类似的行:
1, 4, 2, "PUBLIC, JOHN Q" ,ACTIVE , 1332
我正在寻找一个正则表达式替换,它将与这些行匹配并吐出类似这样的内容:
1,4,2,"PUBLIC, JOHN Q",ACTIVE,1332
我认为这相当简单:我创建了表达式 ([\t]+,)
并将其替换为 ,
。我用 ,
替换了补码表达式 (,[\t]+)
,我认为我已经实现了右修剪和左修剪字符串的好方法.
...但后来我注意到我的 "PUBLIC, JOHN Q"
现在是 "PUBLIC,JOHN Q"
这不是我想要的。 (请注意,逗号后面的空格现已消失)。
修剪逗号前后的空格但保持引用文本不变的适当表达式是什么?
更新
为了澄清,我正在使用一个应用程序来处理该文件。这个应用程序允许我定义多个正则表达式替换;它不提供解析功能。虽然这可能不是理想的机制,但它肯定会优于为这个文件创建另一个应用程序。
最佳答案
如果您的工具使用的引擎是C#正则表达式引擎,那么您可以尝试以下表达式:
(?<!,\s*"(?:[^\\"]|\\")*)\s+(?!(?:[^\\"]|\\")*"\s*,)
替换为空字符串。
这些人的答案假设引号是平衡的,并使用计数来确定空格是否是引用值的一部分。
我的表达式查找不属于引用值的所有空格。
关于c# - 正则表达式用于删除逗号周围的空格(引用时除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498592/