2016-08-01 28 views
0
import re 

b=re.findall('[A-Z]+[a-z]+[A-Z]',k) 

for i in b: 
    print (i) 

我已经写了这段代码。 k中的字符串太长,无法在此打印。 我需要找到所有的子字符串集,其中后面的中间部分是小写字母,而每个字母上的三个字母都是大写字母。 我认为这段代码应该可以工作。但是,它在每个子串中打印随机数的字母。 我的代码有什么问题,或者我该如何解决它? 请帮忙!Python挑战 - #3:它打印随机字母而不是7

+1

好吧,现在你只是检查每一边的一个字母是大写字母,而不是3。 –

+0

实际上,左侧的字母数> 1,右侧的字母数为1。 – James

回答

0

您的正则表达式不应包含+,其中匹配1个或多个大写字母。如果你需要得到类似AAAbCCC只是尝试:

b=re.findall('[A-Z]{3}[a-z][A-Z]{3}',k) 
+0

非常感谢。它不是完整的代码。但它让我在正确的道路上 –

0

您可以{n}指定原子/范围/组的重复,其中n为整数。

我想你的正则表达式更改为[A-Z]{3}[a-z]+[A-Z]{3},或者更好,如果中间子必须只有一个字母,去掉+,因为那样会匹配1个以上小写字符:[A-Z]{3}[a-z][A-Z]{3}

+0

非常感谢。它有帮助。 –