正则表达式记事本++

Regular Expressions Notepad++

使用字符分隔文本时,什么代码允许我在给定行中提取特定段?在一组给定的数据中(以粗体为重点):

1194459945,11/07/2007 18:25:45,2,vnta,287.78,2,7.783,2, 34.111,2,1.3,2,89.54,2,1485.31,26.612

尝试像这样:

11/07/2007 7.783 89.54

目前我的进度是:(\w+,)(.+) ( 这给了我前两列,但我对如何达到 7.783 并将其细分感到困惑。不包括整行。我不能放 \,因为那没有帮助。

像这样的东西可能有用.. ^.*?,([^ ,]+)(?:.*?,){5}([^ ,]+)(?:.*?,){6}([^ ,]+).*$

解释:

  • ^ - 字符串/行的开始
  • .*?, - 匹配第一个逗号之前的任何内容
  • ([^ ,]+) - 匹配任何非 space 或逗号的内容并将其存储在 捕获组 1(您的日期)
  • (?:.*?,){5} - 非捕获组以匹配接下来 5 个字段的字段和逗号
  • ([^ ,]+) - 匹配任何非 space 或逗号的内容并将其存储在 捕获组 2(您的 7.783)
  • (?:.*?,){6} - 另一个非捕获组来匹配接下来 6 个字段的字段和逗号
  • ([^ ,]+) - 匹配任何非 space 或逗号的内容并将其存储在 捕获组 3(您的 89.54)
  • .*$ - 匹配此匹配项之后到字符串/行末尾的任何内容

记事本++:

您可以使用 Notepad++ 中的查找和替换工具仅使用捕获组替换字符串,可以通过使用美元符号后跟捕获组编号来访问,如下所示:

Find: ^.*?,([^ ,]+)(?:.*?,){5}([^ ,]+)(?:.*?,){6}([^ ,]+).*$
Replace:   

测试:

之前:

1194459945,11/07/2007 18:25:45,2,vnta,287.78,2,7.783,2,34.111,2,1.3,2,89.54,2,1485.31,26.612

之后:

11/07/2007 7.783 89.54