Notepad ++ Regex:查找所有1和2个字母的单词

时间:2012-10-12 15:56:26

标签: regex notepad++

我正在使用Notepad ++中200.000+行的文本文件。每行只有一个单词。我需要删除并删除所有只包含一个字母的单词(例如: I )和仅包含两个字母的单词(例如: as )。

我认为我可以像常规正则表达式一样[a-zA-Z]{1,2},但我不认识任何东西(我正试图标记它们)。

我已经完成了手动搜索,我知道确实存在那个长度的单词,因此只能是我的正则表达式代码是错误的。任何人都知道如何在Notepad ++ ???

中执行此操作

干杯,
- 梅斯蒂卡

4 个答案:

答案 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?$