3

我希望能够跳转到带引号的 CSV 文件中不包含 6 个引号的行,因为这感觉是识别损坏行的好方法。

我认为使用带有 Notepad++ 查找功能的正则表达式将是一种明智的方法,但我不确定如何选择行。

6 个引号 (") 会建议一个完整的行,所以我想跳到任何不包含 6 的行。

这是一些可以使用的示例数据,在此示例中,它是我想跳转到的第 4 行

"sam","mark","dave"
"sam","mark","dave"
"sam","mark","dave"
"sam","mark","
dave"
"sam","mark","dave"
"sam","mark","dave"
4

2 回答 2

2

这可以帮助您找到正确的行

^(.*?"){6}[^"]$

然后,您可以使用search->bookmarks->inverse bookmarks

编辑

相反,此模式将仅匹配您想要的行

(?!("[^"\r\n]*){6})^.+?$

它使用负前瞻来告诉搜索引擎避免使用正好 6"的行并保留其他行。

如果可能有超过 6 个引号(这也是一个问题),请改用以下内容

(?!^("[^"\r\n]*){6}$)^.+?$

编辑

  • (?!这是一个否定的前瞻,它告诉“匹配不包含以下文本的字符串(或行)”
  • (^": 不应匹配的文本在行首以 a" 开头( ^)

  • [^"\r\n]*: 之后包含 0 个或多个 ( *) 不是双引号或换行符的元素(如果^是方括号内的第一个字符,则含义是“不要'在括号中找到字符”)

  • ){6}: 重复 6 次

  • $):在行尾结束(和负前瞻结束)

  • ^.+?$: AND,如果条件没问题,匹配整行。

于 2012-10-04T17:06:15.857 回答
0

要查找引号出现在 0 到 5 次之间的行,请使用此正则表达式。

^([^"\n]*"){0,5}$

解释:

  • ^- 从一行的开头
  • ([^\n"]*")- 查找包含除双引号或换行符 ( [^"\n]) 之外的任何字符的组,直到双引号 ( *")。
  • {0,5}- 查找包含 0 到 5 次出现的组的行
  • $- 直到行尾

要匹配超过 6 个的行,"您可以使用此

^(([^"\n]*"){0,5}|([^"\n]*"){7,})$
  • |它放入 OR 两个正则表达式(5 个或更少或 7 个或更多)
  • {7,}- 查找包含 7 次或更多次出现的组的行
于 2012-10-04T17:16:49.993 回答