我们的一个业务合作伙伴经常向我们发送格式错误的 CSV 文件。该文件包含 50,000 行,其中数百行的列分隔符过多。
在 Notepad++ 中,有没有办法找到特定分隔符的数量大于或小于指定数字的所有行,例如count( | ) <> 16
答案1
- Ctrl+F
- 选择“标记”标签
- 找什么:
^[^|]*(?!(?:\|[^|\r\n]*){16}$)(?:\|[^|\r\n]*)*$
- 检查环绕
- 检查正则表达式
- 取消选中
. matches newline
- Mark all
解释:
^ # beginning of line
[^|]* # 0 or more any character not pipe
(?! # start negative lookahead, make sure we haven't after:
(?: # start non capture group
\| # a pipe
[^|\r\n]* # 0 or more non pipe, non linebreak
){16} # end goup, must appear 16 times
$ # end of line
) # end lookahead
(?: # start non capture group
\| # a pipe
[^|\r\n]* # 0 or more non pipe, non linebreak
)* # end goup, may appear 0 or more times
$ # ed of line
屏幕截图:
为了简单起见,我测试了分隔符的数量<> 3