我陷入一个正则表达式问题,该问题说:“使正则表达式匹配一个始终在大写和小写字母之间迭代的10个字符的字符串。” 问题来自在线测验,当您输入答案时,它会告诉您是对还是错。 我尝试了很多选择,但都没有用,因为这个问题对我来说有点模糊。
([a-z][A-Z]){5}
([a-z][A-Z]){5}|([A-Z][a-z]){5}
根据我的看法,我认为这个问题只是希望我们匹配以下字符串
AaAaAaAaAa
或aAaAaAaAaA
答案 0 :(得分:0)
我不确定您需要将此正则表达式并入它的代码,并假设它正好可以得到10个字符,但是您可能是朝着正确的方向前进。我想你可以用这个:
\b(?:[a-z][A-Z]|[A-Z][a-z]){5}\b
答案 1 :(得分:0)
您的当前模式与5个2个字符的重复字符匹配,但是没有特定的边界。您可能会使用word boundaries cat <<EOF > /etc/rotatescript/truncate.sh
FILENAME=/mnt/logs/filename
MAXSIZE=10000000000
FILESIZE=$(stat -c%s "$FILENAME")
if (( FILESIZE > MAXSIZE )); then
truncate -s 0 /mnt/logs/filename
else
echo “nope”
fi
另一种选择是使用锚点来声明字符串的开始和结尾,并使用正向超前来声明字符串的长度为10:
\b([A-Z][a-z]){5}\b
说明
^(?=.{10}$)[A-Z]?(?:[a-z][A-Z])+[a-z]?$
字符串的开头^
断言长度为10个字符的a (?=[a-zA-Z]{10}$)
匹配可选的大写字符[A-Z]?
匹配1+次小写字符,然后是大写字符(?:[a-z][A-Z])+
匹配可选的小写字符[a-z]?
字符串结尾