捕获一个字符串,然后匹配以该字符串开头的所有其他单词

use*_*161 6 javascript regex string

我有一个80,000多个单词的列表,每个单词用换行符分隔.我需要匹配包含一个较小单词作为其前缀的每个单词.例如,

bald    <-- captures bald
balder  <-- matches because it starts with bald
balding <-- matches because it starts with bald
care    <-- captures care
cared   <-- matches because it starts with care
cares   <-- matches because it starts with care
caring  <-- does NOT match because it does not start with care
Run Code Online (Sandbox Code Playgroud)

我将在sublime文本中使用find和replace,因此我希望能够使用""替换所有匹配项,从而将其从列表中删除.

好的,这是背景故事:

我的单词列表基本上是英语词典的删节版本.使用正则表达式我已经能够删除所有专有名词,缩写词,带重音字符的单词以及长度小于4个字母的所有单词.我将使用这个字典来制作我正在制作的javascript文字游戏.(是的,这一个作业,但不是学校学分,而且作业很简单,只做一个简单的javascript游戏.我的游戏逻辑有效,我可以手工编辑单词列表,但我希望它可以完成在2016之前所以正则表达式似乎是要走的路).

游戏的目的是强迫你的对手拼写一个单词.玩家轮流将字母添加到字符串中,一旦字符串与字典中的单词匹配,游戏玩法就会结束.出于这个原因,夸张,头顶和过度杀伤等词语都是重量级的.一旦结束了开销,游戏就......好吧...... 结束了.

我将把wordList作为一个数组加载到一个javascript文件中,所以我希望它尽可能小.

我确信还有其他方法可以做到这一点(api等),但我们不能将它们用于此任务.

任何帮助将非常感谢!

nha*_*tdh 1

我假设所有单词都是小写的,所以我们不必关心大小写。

步骤1

F9通过将光标放在文档中的任意位置(不选择任何内容)并按(或从菜单“编辑”>“排序行”)对单词列表进行排序。

第2步

使用以下正则表达式进行搜索:

^(.*)\R(\1.*$\R?)+
Run Code Online (Sandbox Code Playgroud)

并替换为:

$1\n
Run Code Online (Sandbox Code Playgroud)

我希望您知道诸如read和 之类的情况readdressreaddress因为它以 开头read,所以将被删除,尽管这两个词彼此无关。