真正含糊的Regex问题:始终在大写和小写字母之间迭代的字符串

时间:2019-03-24 14:39:13

标签: python regex

我陷入一个正则表达式问题,该问题说:“使正则表达式匹配一个始终在大写和小写字母之间迭代的10个字符的字符串。” 问题来自在线测验,当您输入答案时,它会告诉您是对还是错。 我尝试了很多选择,但都没有用,因为这个问题对我来说有点模糊。

([a-z][A-Z]){5}

([a-z][A-Z]){5}|([A-Z][a-z]){5}

根据我的看法,我认为这个问题只是希望我们匹配以下字符串 AaAaAaAaAaaAaAaAaAaA

2 个答案:

答案 0 :(得分:0)

我不确定您需要将此正则表达式并入它的代码,并假设它正好可以得到10个字符,但是您可能是朝着正确的方向前进。我想你可以用这个:

\b(?:[a-z][A-Z]|[A-Z][a-z]){5}\b

在线查看:https://regex101.com/r/bynUwn/1

答案 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]?字符串结尾

Regex demo