我需要找到包含超过10个","的行(我导入CSV时出错,所以我需要手动更正).我正在使用Notepad ++,所以我不需要写reqex来匹配行,只是为了匹配coma.
(.*,.*){11,100} //does not work
Run Code Online (Sandbox Code Playgroud)
Tim*_*ker 17
.*
也匹配逗号.您需要排除具有否定字符类的那些([^,]
匹配除逗号之外的任何字符):
^[^,\r\n]*(?:,[^,\r\n]*){11,}$
Run Code Online (Sandbox Code Playgroud)
我已添加\r\n
到字符类中,或者它将匹配换行符.
但请注意,这也将计算引用字符串中包含的逗号,因此如果您有逗号,则会错误判断CSV行中的字段数.
假设 Notepad++ 版本 6+(使用 PCRE Perl 兼容的正则表达式库)并且 ' . 匹配换行符' 框未在查找窗口中打勾:
(.*?,){11,}
如果一行包含 10 个以上的逗号,这将从行的开头到最后一个逗号匹配。
(.*?,)
尽可能少地匹配除换行符之外的任何字符,直到下一个字符是逗号;{11,}
表示 11 次或更多次。
如果您希望正则表达式无论 ' . 匹配换行符' 框被勾选,您可以使用:
([^\n]*?,){11,}
Run Code Online (Sandbox Code Playgroud)
如果 ' ,您的正则表达式确实有效。匹配换行符' 框没有打勾,但由于它贪婪地匹配任何字符,可能会有如此多的潜在匹配项,它可能会挂起应用程序。在?
之后添加.*
以便通配符懒惰或不情愿地匹配,即尽可能少地匹配,应该可以解决问题。
PCRE 手册页
Perl 正则表达式文档- 推荐。
Notepad++“过时”正则表达式教程
归档时间: |
|
查看次数: |
11458 次 |
最近记录: |