查找文本中的单词排列

时间:2019-05-02 12:09:01

标签: regex grep

我正在尝试查找文本文件中的字符数相同但顺序不同的单词。例如。我输入了一个像“ hyone”的词,我想从文本文件中找到一个长度和字符数相同的词。在这种情况下,“蜂蜜”或“ heony”。

我已经尝试过将grep与regex结合使用,但是我使用的代码返回的单词长度相同,但字符数不相同。

我使用了以下命令:

  

grep -E“ ^ [hyone] {5} $” list.txt

此命令返回的单词长为5个字符,但其中包含的单词并非由“ hoooo”或“ yeehe”之类的所有字符组成。 请注意,给出的示例是虚构的,但它们概述了问题。

1 个答案:

答案 0 :(得分:2)

不是最漂亮的正则表达式,但对于您的示例而言,它可以正常工作:

\b(?=.*h)(?=.*y)(?=.*o)(?=.*n)(?=.*e).{5}\b

此代码检查是否有5个符号(将.更改为\w(仅用于字符和数字,或将[a-z]用作ASCII)是否由字符h,y,o,n,和e。

尽管如此,它可能不适用于其他示例。对于单线使用,其创建对于检查其他字符可能有些棘手。因此,正则表达式可能不是解决此类问题的最佳解决方案。 Levenshtein(由Thomas建议;也许除了Soundex之外)可以工作得更好-但是,它们要复杂一些

您可以通过以下网址在线测试给定的正则表达式:https://regex101.com/r/7Cdu03/3/