如何在 Notepad++ 中删除不包含至少一个大写字母、小写字母、数字和特殊符号的行

如何在 Notepad++ 中删除不包含至少一个大写字母、小写字母、数字和特殊符号的行

在网上浏览了大约一个小时后,我决定注册一个账户并提出一个问题:)

我想删除 Notepad++ 中所有不包含至少一个大写字母、小写字母、数字和特殊符号的行 [特殊符号示例:!@#$%^&*()]

输入示例:

josukeisbig
JOSUKEISBIG
JosukeIsBig
JosukeIsB1g
JosukeIsB1g!

示例输出:

JosukeIsB1g!

我发现的唯一相关主题是: 如何删除不包含任何大写字母或小写字母或数字的行 notepad++

但 OP 没有指定特殊字符。

  • 谢谢!

答案1

您可以使用以下正则表达式:

^(?!(^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\!\@\#\$\%\^\&\*\(\)\]]).+$)).*$

在 Notepad++ 中,您可以搜索此正则表达式,将其全部替换为空字符串,然后转到:

编辑 >> 行操作 >> 删除空行

作为删除它们的替代方法,您可以使用同一窗口中的“标记”选项卡,而不是使用“查找和替换”,并使用相同的正则表达式标记所有行。要删除它们,请转到:

搜索 >> 书签 >> 删除书签行


为方便起见,截个图:

在此处输入图片描述

答案2

  • Ctrl+F
  • 选择“标记”标签
  • 找什么:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\r\n]).+$
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • 查看 书签线
  • Mark all

解释:

^                   #  beginning of line
  (?=.*[a-z])       # lookahead, make sure we have a lowercase
  (?=.*[A-Z])       # lookahead, make sure we have an uppercase
  (?=.*\d)          # lookahead, make sure we have a digit
  (?=.*[^\w\r\n])   # lookahead, make sure we have a non-word, non-linebreak
  .+                # 1 or more any character
$                   # end of line

截屏:

在此处输入图片描述


第二步:

Menu => Search => Bookmark => Remove Unmarked Lines.   

截屏:

在此处输入图片描述

相关内容