【问题标题】:Find/Match every similar words in word list in notepad++在记事本++的单词列表中查找/匹配每个相似的单词
【发布时间】:2014-04-14 14:32:49
【问题描述】:
  1. 我有一个按字母顺序排列的单词列表。
  2. 它被列为一列。
  3. 我不使用任何编程语言。
  4. 记事本格式的列表。
  5. 我需要匹配每个相似的单词并将它们放在同一行。
  6. 我使用了正则表达式,但无法获得正确的结果。

第一个列表是这样的:

accept
accepted
accepts
accepting
calculate
calculated
calculates
calculating
fix
fixed

我想要的列表:

accept    accepted   accepts    accepting
calculate calculated calculates calculating
fix       fixed

【问题讨论】:

  • 这真的很模糊。前几个字符应该相似?
  • 它应该只是主角吗? (例如,“boat”与“coat”相似吗?)如果没有准确定义两个词“相似”的含义,这不是特别可解决的......
  • 列表由复数形式、形容词形式、副词形式的单词组成(如果存在)我的意思是列表就像:abash abashed abashes abashing。删除附录并找到相似的
  • 不幸的是,在英语中,这与所需的精确定义并不接近 - “康乃馨”和“制图师”“相似”吗?

标签: regex find notepad++ match


【解决方案1】:

这似乎可行,但您必须多次执行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

【讨论】:

    【解决方案2】:

    我可以想象以编程方式执行此操作并取得有限的成功(取第一个词作为词根,如果随后是具有此词根的派生词,将其放在 同一行 , else 把这个词作为一个新词根放在换行)。这仍然会在不规则单词的情况下失败,因为所有形式的词根都不相同。

    没有编程,只有(手动)预处理 - 如果列表中给定单词的形式少于 4 个,则为每个缺少的动词形式插入空行,因此 总是 4 行 表示每个单词。然后,您可以使用正则表达式将每个这样的四联成一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-07
      • 2018-12-16
      • 2016-07-01
      • 2018-10-13
      • 2011-02-28
      • 2022-06-10
      • 2017-05-25
      • 1970-01-01
      相关资源
      最近更新 更多