如何找到字符发生超过x次的所有行,Notepad ++?

时间:2017-07-25 23:03:00

标签: regex notepad++

我有大多数人可能会考虑解决这个简单易行的问题。

我有一个格式如此的列表;

?d?d?d?d?l?d?d?d
?d?d?d?d?l?d?d?l
?d?d?d?d?l?d?d?u
?d?d?d?d?l?d?l?d
?d?d?d?d?l?d?l?l

这样有成千上万行。我想要一个正则表达式,它将选择包含超过5次出现的字母d的所有行,以便可以从列表中删除它们。

尽管进行了广泛的搜索,我还没有找到有效的解决方案。我在这个论坛和其他论坛(包括空格和特殊字符)上找到了很多搜索字符等的方法,并且能够成功地在其他单词列表上进行搜索,但我认为所有单词都存在那些问号搞砸了......但我无法肯定地说。

如果我错过了一篇能够完美解释这个问题的帖子,我会提前道歉,但我已经努力找到一个解决方案,并且对此感到恼火。

非常感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

使用查找和替换并替换与以下内容匹配的行:

^.*(d.*){6}.*\r\n

说明:

^ - 从一行的开头开始 。* - 跳过0个或更多不感兴趣的字符但不过去的结尾 (d。) - 找到d后跟任何不感兴趣的字符,但不是过去的结尾 {6} - 重复最后一组六次(所以6 d后跟任何东西) 。 - 匹配任何剩余的字符到行尾 \ r \ n-匹配行序列的结尾(由@toto指出,更好地作为\ R

请参阅https://regex101.com/r/UaYAz4/1

答案 1 :(得分:1)

如果没有安装notepad ++,我希望^.*(?:d.*){5,}$ (regex101)能够做你想做的事情:

  • ^从该行的开头开始。
  • .*匹配任何字符0次或更多次。 (忽略行开头不是d的任何字符。)
  • (?:d.*){5,}匹配以下5次或更多次:
    • d字母d。
    • .*任何字符0次或更多次。 (忽略d s。)之间的任何字符。
  • $匹配该行的结尾。

正如NetMage指出的那样,这将留下空白。要解决此问题,请使用\r?\n代替$。匹配:

  • \r?如果使用Windows,则为可选回车。
  • \n换行。