在notepad ++中查找/匹配单词列表中的每个相似单词

时间:2014-04-14 14:32:50

标签: regex find notepad++ match

  1. 我按字母顺序排列了一个单词列表。
  2. 它被列为一列。
  3. 我不使用任何编程语言。
  4. 记事本格式的列表。
  5. 我需要匹配每个相似的单词并将它们放在同一行。
  6. 我使用正则表达式但我无法达到正确的结果。
  7. 第一个列表如下:

    accept
    accepted
    accepts
    accepting
    calculate
    calculated
    calculates
    calculating
    fix
    fixed
    

    我想要的列表:

    accept    accepted   accepts    accepting
    calculate calculated calculates calculating
    fix       fixed
    

2 个答案:

答案 0 :(得分:0)

我可以想象以有限的成功以编程方式进行此操作(以第一个词为根,而如果派生词跟随此根,则将其置于同一行 else 将单词作为新根并将其放入新行)。对于所有形式的root都不一样的情况,这仍然会失败。

如果没有编程,只有(手动)预处理有一种方法 - 如果列表中给定单词的形式少于4个,则为每个缺少的动词形式插入空白行,因此总是4行< / strong>对于每个单词。然后你可以使用正则表达式将每个这样的四元组分成一行。

答案 1 :(得分:0)

这似乎有效,但你必须多次Replace All

查找(^(.+?)\s*?.*?)\R\2并替换为\1\t\2。 {}禁用. matches newline

工作原理:

它会在行^(.+?)的开头找到一些字符,然后在任何换行符\R找到这些字符,再次找到相同的字符\2

\s*?.*?用于在多个Replace All之后跳过不必要的字符。 \s*?跳过第一个空格,并.*?线上剩余的任何字符。

匹配将替换为\1\t\2,其中\1(^(.+?)\s*?.*?)中匹配的任何内容,\2是与(.+?)匹配的任何内容。 \t用于插入制表符以替换换行符。

它如何破裂:

请注意,对于具有相似前缀的不同字词,这不会很好用,例如:

hand
hands
handle
handles

2次替换后,这将是hand hands handle handles