Answers
- echo "abba" | sed -n '/\(.\)\(.\)\2\1/' p 可以判断长度为4的字符是否为回文
- echo "level" | sed -n '/\(.\)\(.\)\(.\)\2\1' p 可以判断长度为5的字符是否为回文
我稍微解释下,"\(.\)"代表了任意一个字符,"\("是对"("进行了转义,sed需要"\2"表示是对刚才匹配到的字符的反向引用,就好比是一个变量。\1就是反向引用第一个匹配到的,\2就是反向引用第2个匹配到的。
如果需要判断的字符数为偶数,比如为4个,则"\(.\)"就有2个,反向引用就是\2和\1;如果需要判断的字符数为奇数个,比如为5个,则"\(.\)"就有3个,反向引用就是\2和\1,中间的那个就不需要反向引用了,也就是\3没有必要判断。我们可以看到这个"\(.\)"的个数是和字符数的长度有关。
可见:http://www.groad.net/bbs/simple/?t6847.html
矿泉水兑女未水
answered 12 years ago