我有一个由客户提供的csv文件,第一列中有一个文件路径,然后是空白列,一个文件大小,然后是两个时间戳,然后是一个所有者,最后一个列通常是(尽管不是唯一的)列,空白。它可以包含文件的前500个字符的文本。
某些文件路径包含单引号双引号字符。
我的问题是找到可在Notepad ++中使用的正则表达式,以便仅在第一列中找到这些出现的内容,并用双引号对替换它们,以便为CSV文件正确地转义它们。
以下是三个示例行:
"/TCH-EXP/mnt/office/dept/ped/Bill New Structure/_Personal Folders/TFR/PowerPoint/Privat/Emilie Føs"da.ppt","",143872,Mon Mar 5 10:02:22 2007,Mon Mar 5 10:02:22 2007,"TFR012",""
"/TCH-EXP/mnt/office/dept/ped/Bill New Structure/_Personal Folders/TFR/Tfr/Siemens Data/Halfdan "B" data (2).msg","",2092544,Mon Feb 9 09:22:32 2004,Mon Feb 9 09:22:32 2004,"TFR012",""
"/TCH-EXP/mnt/office/dept/ped/Bill New Structure/_Personal Folders/TFR/Tfr/Siemens Data/Halfdan "B" data "20-nov-2003".msg","",1060864,Mon Feb 9 09:22:32 2004,Mon Feb 9 09:22:32 2004,"TFR012",""
在第一行中,我需要Føs"da.ppt
才能成为Føs""da.ppt
在第二行中,我只需要"B"
成为""B""
在第三行中,我需要"B"
为""B""
和"20-nov-2003"
为""20-nov-2003""
是否可以使用一个正则表达式搜索和替换来解决所有这三种情况?
非常感谢!
我尝试了一个简单的搜索,使用捕获组在第一列中发现“”,但仅通过计数适当的逗号即可。
Search: ^("/TCH-.*)"(.*","",.*,"")
Replace: $1""$2
这似乎适用于第一个示例,该示例中路径中只有一个“”。
答案 0 :(得分:0)
如果使用notepad ++,可能会使用\G
并使用否定的前瞻性来确保选择的"
后面没有,"
或末尾。字符串。
然后将其替换为完全匹配的$0
,然后加上一个双引号。
查找内容
(?:\G(?!^)|"/TCH-EXP)[^"]+\K"+(?!,"|$)
替换为
$0"
说明
(?:\G(?!^)|"/TCH-EXP)
上一场比赛的结束,而不是开始或比赛"/TCH-EXP
[^"]+
匹配1次以上而不是双引号\K"+
忘记匹配的内容,并匹配1次以上"
(?!,"|$)
断言否定断言右边的内容不是,"
或字符串的结尾