我正在尝试找到两个以上个别数字加倍的每个数字。如:
我的代码是:
if [[ $number =~ (.)\1{3,10} ]];
then
echo "$number found"
fi
它正在运作但不如预期: 它回显了包含11的数字,只有它们。
我做错了什么?
答案 0 :(得分:1)
我建议使用GNU grep:
grep -oE '(.)(\1){2,9}' <<< "1837488809"
输出:
888
答案 1 :(得分:0)
我去了:
check="grep -oE '(.)(\1){2,9}'"
if [ $check -gt 1 ]; then ...
答案 2 :(得分:0)
bash
正则表达式不支持反向引用,因此您只需查找在3-10个字符串之前包含至少一个字符的字符串。正确的正则表达式是
# Tedious, yes, but not really any longer than a piece of code to generate it
regex="0{3,10}|1{3,10}|2{3,10}|3{3,10}|4{3,10}|5{3,10}|6{3,10}|7{3,10}|8{3,10}|9{3,10}"
if [[ $number =~ $regex ]];
then
echo "$number found"
fi