我正在使用Notepad ++中200.000+行的文本文件。每行只有一个单词。我需要删除并删除所有只包含一个字母的单词(例如: I )和仅包含两个字母的单词(例如: as )。
我认为我可以像常规正则表达式一样[a-zA-Z]{1,2}
,但我不认识任何东西(我正试图标记它们)。
我已经完成了手动搜索,我知道确实存在那个长度的单词,因此只能是我的正则表达式代码是错误的。任何人都知道如何在Notepad ++ ???
中执行此操作干杯,
- 梅斯蒂卡
答案 0 :(得分:6)
如果您只想删除单词但将行留空,则可以:
^[a-zA-Z]{1,2}$
用空字符串替换它。 ^
和$
是行的开头和结尾的锚点(因为Notepad ++的正则表达式在多行模式下工作)。
如果要完全删除这些行,请搜索:
^[a-zA-Z]{1,2}\r\n
用空字符串替换。但是,这在Notepad ++ 6之前不起作用,因此请确保它是最新的。
请注意,您必须将\r\n
替换为文件的特定行结尾!
Tim Pietzker建议,一个独立于平台的解决方案也可以删除空行:
^[a-zA-Z]{1,2}[\r\n]+
独立于平台的解决方案,不会删除空行,只会删除一行或两个字母:
^[a-zA-Z]{1,2}(\r\n?|\n)
答案 1 :(得分:2)
我不使用Notepad ++,但我的猜测可能是因为你有太多的匹配 - 尝试包含单词边界(你的exp将匹配每组2个字母)
\b[a-zA-Z]{1,2}\b
答案 2 :(得分:1)
您指定的正则表达式应该找到1或2个字符(即使在Notepad ++的查找对话框中),但不是您想象的方式。您希望正则表达式确保它从行的开头开始,并在^
和$
结束时结束:
^[a-zA-Z]{1,2}$
Notepad++ version 6.0引入了PCRE引擎,因此,如果这在当前版本中无效,请尝试更新到最新版本。
答案 3 :(得分:1)
您似乎使用了不支持显式量词的Notepad ++版本:这就是为什么根本没有匹配(因为{
和}
被视为文字,而不是特殊符号)。< / p>
解决方案是使用更长的替代品:
\w\w?
...但这只是故事的一部分,因为这个正则表达式将匹配任何符号,而不仅仅是简短的单词。要做到这一点,你需要这样的东西:
^\w\w?$