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

时间:2015-12-28 13:39:35

标签: regex notepad++

我有这种格式的字符串:

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

需要格式化如下:

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

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

2 个答案:

答案 0 :(得分:1)

搜索:

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

替换为:

"\1"

在记事本v6.6.9上测试

答案 1 :(得分:0)

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

使用此正则表达式:

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

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

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

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

替换模式意味着:只有在匹配(p1)或使用(?{p1}$+{p1} +群组" + p2时才使用群组" {1}}已匹配(p2)。

见截图:

enter image description here