正则表达式:所有希腊字母有 5 个唯一字母(意味着每个字母只出现一次)

正则表达式:所有希腊字母有 5 个唯一字母(意味着每个字母只出现一次)

另一个我似乎无法解决的问题:所有希腊字母都有 5 个唯一的字母(意味着每个字母只出现一次)。

我的解决方案:

egrep '(.)([^/1])([^/1/2])([^/1/2/3])([^/1/2/3/4])' greek.txt

所以我想我想说的是:

  • 匹配任何第一个字符

  • 每个连续字符不能是前面的任何模式

但结果是:

alpha
gamma
delta
epsilon
theta
kappa
lambda
omicron
sigma
upsilon
omega

Alpha、Gamma,它们的特征并不独特。关于我做错了什么有任何提示或提示吗?

答案1

  • 使用一个 grep 过滤所有长度为 != 5 的行。
  • 使用第二个 grep 过滤所有重复字符的单词。

egrep '^.{5}$' greek.txt | egrep -v '^.*(.).*\1.*$'

感谢@StephaneChazelas 在评论中指出优化:

grep -x '.\{5\}' | grep -v '\(.\).*\1'

答案2

我认为你走在正确的轨道上,但你的斜杠走向了错误的方向,成为反向引用。使用\1/1

相关内容