0

我有一个任务,我必须向文件发送无限的参数列表,文件必须打印以下列方式重复的字符串:

NumNumNumCharCharChar...

  • 号码
  • 字符

每三个后面的数字都相同,以及接下来的三个字符,然后是另外三个数字,然后是另外三个字符。字符串必须以数字开头并以重复的方式以字符结尾。

为了解决这个问题,你可以 grep使用/ egrep— 取决于你,这意味着解决方案是在正则表达式中。

好的,这就是我想为 egrep 做的事情:

egrep "^([0-9][0-9][0-9][a-b][a-b][a-b])\1*$"
4

1 回答 1

0

你的尝试几乎是正确的。反向引用\1将需要匹配字符串的重复,而不是匹配模式。允许模式重复。在重复中,您确实需要反向引用:

egrep '^(([0-9])\2{2}([a-z])\3{2})+$' file

作为一个 shell 脚本调整,我切换到单引号(双引号不太安全)并将小写类扩展为[a-z]. 请注意,外括号是第 1 组,因此对内括号表达式的反向引用将是\2and \3

于 2012-12-29T16:09:49.917 回答