为字符串中的每个单词添加引号,数字除外

Add Quotation mark to every word in string, except numbers

我有这种格式的字符串:

salary,salary,200.00,10/01/2013,

需要格式化如下:

"Salary","Salary",1580.00,"2014-11-04",

尝试使用 Notepad++,但找不到如何替换除数字以外的所有字符串。

搜索这个:

(?:^|(?<=,))([a-z]+|\d{2}/\d{2}/\d{4})(?=,)

替换为:

""

在记事本 v6.6.9 上测试

我建议将您想要避免用双引号(数字)括起来的内容匹配并捕获到一组中,将其他所有内容放入另一组中。在替换模式中,我们可以使用 条件替换模式 .

指定要用双引号括起来的组

使用这个正则表达式:

(?<p1>(?:^|,)[+-]?\d+(?:[,\h]?\d{3})*(?:\.\d+)?(?:,|$))|(?<p2>[^,\r\n]+)

并替换为(?{p1}$+{p1}:"$+{p2}")

正则表达式包含两个选项:

  • (?<p1>(?:^|,)[+-]?\d+(?:[,\h]?\d{3})*(?:\.\d+)?(?:,|$)) - 组 p1 匹配负数和正数(整数或浮点数,数字分组符号为空格或逗号,小数为 . - 可以进一步调整) .
  • | - 或者...
  • (?<p2>[^,\r\n]+) - 组 p2 匹配除回车符 return、换行符或逗号之外的 1 个或多个符号。

替换模式的意思是:只有在匹配((?{p1}$+{p1})时才使用组p1,或者如果匹配则使用"+组p2+"p2 匹配 (:"$+{p2}"))。

见截图: