Question: A bit confused trying to do a string match that accepts this:

Lets say a string S = "Download" Here, S can be "Download" or "DOWNLOAD" or "DoWNload". Thus, any character in the string can be an uppercase or a lowercase. Its rather easy to write a regex match for all upper case or all lower case letters or even a mix of letters, but I found it difficult to write a regex match that follows a particular order, which here is "Download". 

I hope I was lucid here.

Answer: 
First, you can covert the string before the match

```
re.search(expr, s.lower())

```

If you want to ingore the case, you can use flag `re.IGNORECASE`

```
re.search(expr, s, re.IGNORECASE)

```

See other available flags here: <http://docs.python.org/library/re.html#module-contents>
```
s="Download"
re.findall("^[A-Z][a-z]*$",s)
['Download']
s="DownloaD"
re.findall("^[A-Z][a-z]*$",s)
[]
s="download"
re.findall("^[A-Z][a-z]*$",s)
[]

```

If I understand your question correctly, you want to match a string with the First Cap followed by small case. In such a scenario, the above should work.