Search code examples
pythonregexcamelcasing

Check for camel case in Python


I would like to check if a string is a camel case or not (boolean). I am inclined to use a regex but any other elegant solution would work. I wrote a simple regex

(?:[A-Z])(?:[a-z])+(?:[A-Z])(?:[a-z])+

Would this be correct? Or am I missing something?

Edit

I would like to capture names in a collection of text documents of the format

McDowell
O'Connor
T.Kasting

Edit2

I have modified my regex based on the suggestion in the comments

(?:[A-Z])(?:\S?)+(?:[A-Z])(?:[a-z])+

Solution

  • You could check if a string has both upper and lowercase.

    def is_camel_case(s):
        return s != s.lower() and s != s.upper() and "_" not in s
    
    
    tests = [
        "camel",
        "camelCase",
        "CamelCase",
        "CAMELCASE",
        "camelcase",
        "Camelcase",
        "Case",
        "camel_case",
    ]
    
    for test in tests:
        print(test, is_camel_case(test))
    

    Output:

    camel False
    camelCase True
    CamelCase True
    CAMELCASE False
    camelcase False
    Camelcase True
    Case True
    camel_case False