我正在尝试创建一个读取n
字符串并检查它们是否与正则表达式模式有关的程序:XXXXX1234X其中X是大写字符,{1,2,3,4}是任何数字。据我检查,正则表达式模式是正确的。问题似乎在于字符串的输入和比较。
read n
i=0
declare -a str
while [ $i -lt $n ]
do
read 'str[$i]'
i=$((i+1))
done
i=0
while [ $i -lt $n ]
do
[[ $(str[$i]) =~ ^([A-Z]){5}([0-9]){4}([A-Z]){1}$ ]] && echo YES || echo NO
i=$((i+1))
done
答案 0 :(得分:0)
我对您的代码做了一些小修改,我在正则表达式测试中将(
和)
替换为{
}
:
[[ ${str[$i]} =~ ^...
进行一些测试并且有效:
#!/bin/bash
read n
i=0
declare -a str
while [ $i -lt $n ]
do
read 'str[$i]'
i=$((i+1))
done
i=0
while [ $i -lt $n ]
do
[[ ${str[$i]} =~ ^([A-Z]){5}([0-9]){4}([A-Z]){1}$ ]] && echo YES || echo NO
i=$((i+1))
done