正则表达式使用Notepad ++标识不包含引号字符的确切出现次数的行

时间:2012-10-04 16:56:00

标签: regex notepad++

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

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

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

以下是一些要播放的示例数据,在此示例中,第4行我想跳转到

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

2 个答案:

答案 0 :(得分:2)

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

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

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

为不匹配的行(您正在追踪的行)添加书签

修改

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

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

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

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

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

修改

  • (?!这是一个负面的预测,它告诉“匹配字符串(或行)不包含以下文字”
  • (^":不应匹配的文字以行尾" 开头^

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

  • ){6}:重复6次

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

  • ^.+?$:如果条件合适,请匹配整行。

答案 1 :(得分:0)

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

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

说明:

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

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

^(([^"\n]*"){0,5}|([^"\n]*"){7,})$
  • |它输入两个正则表达式(5或更少OR 7或更多)
  • {7,} - 查找包含7个或更多组的