Sir*_*rus 2 grep regular-expression
这是一个非常基本的问题,但我无法理解。我正在学习 Linux,我收到的问题之一是;
*感伤这个词包括出现三次的相同的三个字符(例如“ent”)。单词“blayblapblam”也包含重复三次的相同的三个字符(例如“bla”)。
你能找到多少个包含任意三个字符重复三次的单词,比如“sentimentalment”和“blayblapblam”,但也以小写的“d”开头。使用 /usr/share/dict/words 作为可能的单词列表,并使用 grep 找到答案。“d”不是检测三字符字符串时考虑的字符之一。*
到目前为止,我可以返回相同的三个字母出现两次的实例;
grep -E '^d(...).*\1' /usr/share/dict/words > output
Run Code Online (Sandbox Code Playgroud)
在我看来,查找以 'd' 开头的单词,然后在同一组 (1) 之前再次出现三个字母、0 个或多个字符的组合。
我试过以下;
grep -E '^d(...).*\1.*\1' /usr/share/dict/words > output
Run Code Online (Sandbox Code Playgroud)
如果我的理解是正确的(显然不是),则返回第一组,然后返回零个或多个字符,然后再返回第一组。
有人能指出我哪里出错了吗?任何帮助表示赞赏。
小智 9
看来您已将三个字母固定在d
. 也许你需要这样的东西:
grep -E '^d.*(...).*\1' /usr/share/dict/words > output
这将使您的 3 模式搜索成为
grep -E '^d.*(...).*\1.*\1' /usr/share/dict/words > output
出于可移植性的原因,应该避免将扩展的正则表达式与反向引用相结合,因此更好地使用
grep '^d.*\(...\).*\1.*\1' /usr/share/dict/words > output
归档时间: |
|
查看次数: |
4514 次 |
最近记录: |